Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
Sign in to follow this  
Denis1979

Скрытие attachments

Приветствую Вас уважаемые форумчане. Такой вопрос. Сделал свою модовую бочку, прописал в ней слоты, все работает все отлично, но есть одно но, attachments не скрываются при закрытии бочки. Подскажите куда двигаться дальше.

class CfgPatches
{
	class DZ_Gear_Containers
	{
		units[]={};
		weapons[]={};
		requiredVersion=0.1;
		requiredAddons[]=
		{
			"DZ_Data"
		};
	};
};
class CfgVehicles
{
	class HouseNoDestruct;
	class Inventory_Base;
	class Bottle_Base;
	class Container_Base;
	class WorldContainer_Base;
	class Barrel_ColorBase: Container_Base
	{
	};
	class FireplaceBase: Inventory_Base
	{
	};
	class BarrelHoles_ColorBase: FireplaceBase
	{
	};
	class FBS_BarrelBase: Barrel_ColorBase
	{
		descriptionShort="<Расширенная бочка FBS";
		inventorySlot[]=
		{
			"55galDrum_1",
			"55galDrum_2",
			"55galDrum_3",
			"55galDrum_4",
			"55galDrum_5",
			"55galDrum_6",
			"55galDrum_7",
			"55galDrum_8",
			"55galDrum_9",
			"55galDrum_10",
			"55galDrum_11",
			"55galDrum_12",
			"Truck_01_Barrel1",
			"Truck_01_Barrel2",
			"Truck_01_Barrel3",
			"Truck_01_Barrel4",
			"Truck_01_Barrel5",
			"Truck_01_Barrel6",
			"Truck_01_Barrel7",
			"Truck_01_Barrel8",
			"Truck_01_Barrel9",
			"Truck_01_Barrel10",
			"Truck_01_Barrel11",
			"Truck_01_Barrel12"
		};
		class Cargo
		{
			itemsCargoSize[]={10,50};
			openable=0;
			allowOwnedCargoManipulation=0;
		};
	};
	class DamageSystem
		{
			class GlobalHealth
			{
				class Health
				{
					hitpoints = 100000;
				};
			};
			class GlobalArmor
			{
				class FragGrenade
				{
					class Health
					{
						damage = 8.0;
					};
					class Blood
					{
						damage = 8.0;
					};
					class Shock
					{
						damage = 8.0;
					};
				};
			};
		};
	class FBS_250_Blue_Barrel: FBS_BarrelBase
	{
		scope=2;
		color="black_Camo";
		displayName="Бочка FBS 250 слотов.";
		attachments[] = 
		{
			"shoulder1",
			"shoulder2",
			"shoulder3",
			"shoulder4",
			"shoulder5",
			"shoulder6",
			"shoulder7",
			"shoulder8",
			"shoulder9",
			"shoulder10",
			"shoulder11",
			"shoulder12",
			"shoulder13",
			"shoulder14",
			"shoulder15",
			
		};
		hiddenSelectionsTextures[]=
		{
			"FBS_Barel\FBS_Barel\data\fbs_pixel_barrel_blue_co.paa"
		};
		class DamageSystem: DamageSystem
		{
			class GlobalHealth: GlobalHealth
			{
				class Health: Health
				{
					RefTexsMats[] = {"FBS_Barel\FBS_Barel\data\fbs_pixel_barrel_blue.rvmat"};
				};
			};
		};
	};
};
class CfgSlots {
	class Slot_Shoulder;		
	class Shoulder_Base : Slot_Shoulder {
		inventorySlot[] = {"Shoulder1", "Shoulder2", "Shoulder3", "Shoulder4", "Shoulder5", "Shoulder6", "Shoulder7", "Shoulder8", "Shoulder9", "Shoulder10", "Shoulder11", "Shoulder12", "Shoulder13", "Shoulder14", "Shoulder15"};
	};
};

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0

либо через анимацию, либо через simpleHiddenSelections
наверно проще второй вариант
тебе нужно чтобы был селекшен в конфиге модели, в который входят все твои атачменты
например "hide_onclose"

тогда в конфиге бочки должна быть строчка

simpleHiddenSelections[] = {"hide_onclose"};

а в код бочки

	override void Open ()
	{
		super.Open();
		if (GetGame().IsDedicatedServer())
			return;
		int hideOnClose = -1;
		TStringArray selectionNames = new TStringArray;
		ConfigGetTextArray("simpleHiddenSelections", selectionNames);
		hideOnClose = selectionNames.Find("hide_onclose");

		if (hideOnClose >= 0)
			SetSimpleHiddenSelectionState(hideOnClose,true);
	}

	override void Close()
	{
		super.Close();
		if (GetGame().IsDedicatedServer())
			return;
		int hideOnClose = -1;
		TStringArray selectionNames = new TStringArray;
		ConfigGetTextArray("simpleHiddenSelections", selectionNames);
		hideOnClose = selectionNames.Find("hide_onclose");

		if (hideOnClose >= 0)
			SetSimpleHiddenSelectionState(hideOnClose,false);
	}

 

как делать анимацией можно посмотреть на примере самой бочки, смотри Lid и Lid2

Share this post


Link to post
Share on other sites



  • 0
13 минут назад, Archon7th сказал:

либо через анимацию, либо через simpleHiddenSelections
наверно проще второй вариант
тебе нужно чтобы был селекшен в конфиге модели, в который входят все твои атачменты
например "hide_onclose"

тогда в конфиге бочки должна быть строчка

simpleHiddenSelections[] = {"hide_onclose"};


simpleHiddenSelections[] = {"hide_onclose"};

а в код бочки

override void Open () { super.Open(); if (GetGame().IsDedicatedServer()) return; int hideOnClose = -1; TStringArray selectionNames = new TStringArray; ConfigGetTextArray("simpleHiddenSelections", selectionNames); hideOnClose = selectionNames.Find("hide_onclose"); if (hideOnClose >= 0) SetSimpleHiddenSelectionState(hideOnClose,true); } override void Close() { super.Close(); if (GetGame().IsDedicatedServer()) return; int hideOnClose = -1; TStringArray selectionNames = new TStringArray; ConfigGetTextArray("simpleHiddenSelections", selectionNames); hideOnClose = selectionNames.Find("hide_onclose"); if (hideOnClose >= 0) SetSimpleHiddenSelectionState(hideOnClose,false); }


	override void Open ()
	{
		super.Open();
		if (GetGame().IsDedicatedServer())
			return;
		int hideOnClose = -1;
		TStringArray selectionNames = new TStringArray;
		ConfigGetTextArray("simpleHiddenSelections", selectionNames);
		hideOnClose = selectionNames.Find("hide_onclose");

		if (hideOnClose >= 0)
			SetSimpleHiddenSelectionState(hideOnClose,true);
	}

	override void Close()
	{
		super.Close();
		if (GetGame().IsDedicatedServer())
			return;
		int hideOnClose = -1;
		TStringArray selectionNames = new TStringArray;
		ConfigGetTextArray("simpleHiddenSelections", selectionNames);
		hideOnClose = selectionNames.Find("hide_onclose");

		if (hideOnClose >= 0)
			SetSimpleHiddenSelectionState(hideOnClose,false);
	}

 

как делать анимацией можно посмотреть на примере самой бочки, смотри Lid и Lid2

Получается нужно подключать скриптовую часть? Верно я понимаю?

Share this post


Link to post
Share on other sites
  • 0

@Denis1979 ну можно подвязаться к анимации крышки
посмотри в модели селекше lid или lid2
не помню какая из них закрытая
и добавь в селекшен открытой крышки свои прокси
поидее должно сработать

Share this post


Link to post
Share on other sites
  • 0
40 минут назад, Archon7th сказал:

@Denis1979 ну можно подвязаться к анимации крышки
посмотри в модели селекше lid или lid2
не помню какая из них закрытая
и добавь в селекшен открытой крышки свои прокси
поидее должно сработать

Да нет, для моего уровня знаний (он не высок) я думаю вариант simpleHiddenSelections будет проще воплотить в реальность. Еще подскажите пожалуйста, куда в конфиг мне прикрепить simpleHiddenSelections[] = {"hide_onclose"};?

Share this post


Link to post
Share on other sites
  • 0

@Denis1979 в родительский класс свои бочек
class FBS_BarrelBase: Barrel_ColorBase

не забудь про селекшен в самой модели и селекшен в моделконфиге

Share this post


Link to post
Share on other sites
  • 0

@Denis1979 всё таки через анимацию и не получилось бы
попробовал подобную тему и обнаружил что прокси не скрывается анимацией, работает только через simpleHiddenSelections
хотя не исключаю, может что-то сделал не правильно, сильно глубоко не разбирался, так чисто попробовал

Share this post


Link to post
Share on other sites
  • 0
2 часа назад, Archon7th сказал:

@Denis1979 в родительский класс свои бочек
class FBS_BarrelBase: Barrel_ColorBase

не забудь про селекшен в самой модели и селекшен в моделконфиге

Спасибо большое, буду пробовать.

Share this post


Link to post
Share on other sites
  • 0
15.01.2024 в 02:16, Denis1979 сказал:

Спасибо большое, буду пробовать.

Как успехи? Получилось убрать отображение аттачментов в табе? (P.S. Если да - подскажи решение, проблема аналогична)

Edited by RikiDew (see edit history)

Share this post


Link to post
Share on other sites
  • 0
17 часов назад, RikiDew сказал:

Как успехи? Получилось убрать отображение аттачментов в табе? (P.S. Если да - подскажи решение, проблема аналогична)

Не актуально) Решил вопрос

Share this post


Link to post
Share on other sites
  • 0

Чтобы скрывать вложения (attachments) при закрытии инвентаря в **DayZ**, нам нужно отследить событие закрытия инвентаря и обновить отображение вложений. Прямого события "закрытие инвентаря" в скриптах DayZ нет, но можно использовать трекер взаимодействий с инвентарем и изменять видимость аттачментов при его закрытии.

Для этого потребуется:
1. Отслеживать момент закрытия инвентаря.
2. Обновлять видимость вложений (аттачментов).

Пример скрипта для скрытия вложений при закрытии инвентаря

Мы можем переопределить логику работы с инвентарем у игрока и добавить обработчик закрытия инвентаря. Вот как это может выглядеть:

**Пример кода скрытия аттачментов при закрытии инвентаря**

modded class PlayerBase extends ManBase
{
    // Переменная для отслеживания состояния инвентаря
    bool m_IsInventoryOpen = false;

    override void CommandHandler(float pDt, int pCurrentCommandID, bool pCurrentCommandFinished)
    {
        super.CommandHandler(pDt, pCurrentCommandID, pCurrentCommandFinished);

        // Проверяем, если инвентарь открыт
        if (GetGame().GetUIManager().GetMenu() == NULL && m_IsInventoryOpen)
        {
            // Если инвентарь был открыт, но сейчас закрыт - скрываем аттачменты
            HideAttachments();
            m_IsInventoryOpen = false; // Обновляем состояние
        }
        else if (GetGame().GetUIManager().GetMenu() != NULL && !m_IsInventoryOpen)
        {
            // Если инвентарь открыт - обновляем состояние
            m_IsInventoryOpen = true;
        }
    }

    // Функция для скрытия аттачментов
    void HideAttachments()
    {
        // Перебираем все аттачменты игрока
        for (int i = 0; i < GetInventory().AttachmentCount(); i++)
        {
            EntityAI attachment = GetInventory().GetAttachmentFromIndex(i);
            if (attachment)
            {
                // Скроем все аттачменты (или выберем конкретные)
                attachment.SetInvisible(true); // Скрываем аттачмент
            }
        }
    }

    // Функция для показа аттачментов (если необходимо при открытии)
    void ShowAttachments()
    {
        for (int i = 0; i < GetInventory().AttachmentCount(); i++)
        {
            EntityAI attachment = GetInventory().GetAttachmentFromIndex(i);
            if (attachment)
            {
                // Показать аттачмент
                attachment.SetInvisible(false);
            }
        }
    }
}

Пояснение:

1. **m_IsInventoryOpen** — булевая переменная, которая отслеживает текущее состояние инвентаря (открыт или закрыт).
   
2. **CommandHandler** — основная функция, которая выполняется каждый кадр, и мы используем её для отслеживания событий. Мы проверяем состояние инвентаря с помощью `GetGame().GetUIManager().GetMenu()`:
   - Если меню равно `NULL`, это значит, что инвентарь закрыт.
   - Если меню не равно `NULL`, это значит, что инвентарь открыт.

3. **HideAttachments** — функция, которая перебирает все аттачменты в инвентаре игрока и делает их невидимыми с помощью `SetInvisible(true)`.

4. **ShowAttachments** — дополнительная функция, которую можно использовать для того, чтобы показывать аттачменты при открытии инвентаря (если потребуется).

Шаги для реализации:
1. **Добавление скрипта в мод**: Этот код необходимо добавить в ваш мод, который управляет взаимодействиями игрока с инвентарем.
2. **Тестирование**: После добавления скрипта протестируйте его в игре, чтобы убедиться, что аттачменты скрываются при закрытии инвентаря.

Этот метод позволяет динамически скрывать аттачменты всякий раз, когда игрок закрывает инвентарь.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.