BorizzK

Получение содержимого всего инветаря

Вопрос

Чет затупил нещадно

Делал как-то еще на 063 но куда-то дел код

 

Получаем в цикле что на игроке и пытаемся получить что в вещах

AttCount = player.GetInventory().AttachmentCount();

for ( int i = 0; i < AttCount; i++ )

{

attachment = player.GetInventory().GetAttachmentFromIndex(i);

   if ( attachment.IsItemBase() )
   {

     SubAttCount = attachment.GetInventory().AttachmentCount();

     for ( int a = 0; a < SubAttCount; a++ )

     {

         subattachment = attachment.GetInventory().GetAttachmentFromIndex(a);

     }

   }

}

 

Если находится akm, то attachment.GetInventory().AttachmentCount(); и далее работает

Если например куртка или штаны - то нет, чет запамятовал, как получить содержимое в случае курки, рюкзака???

...

 

Спасибо!

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

8 ответов на этот вопрос

Вспомнил

array<EntityAI> subItems = new array<EntityAI>;
 

attachment.GetInventory().EnumerateInventory(InventoryTraversalType.PREORDER, subItems);

 

ну и разбор массива

 

P.S. решил написать альтернативную версию сохранения

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


BorizzK сложно именно разложить вещи по ячейкам инвентаря так, как оно поместится все там, все остальное ерунда. К слову, уже сделал даже давно, только нет смысла заниматься этим далее из-за ограничений в виде количества файлов в папке и не создаваемых папок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new Про кл-во файлов не знал
Но вот на ограничения на данные в профиле сервера пока не натыкался

Один раз его умудрился до 12 гигов раздуть

Я именно в него сохранять собираюсь

ну а в inventory\inventory.c есть описание всего что нужно

 

получить где лежит вещь в каком слоте

или положить вещь в нужный слот

	///@{ cargo
	proto native CargoBase GetCargo ();
	/**
	 * @brief Create Entity of specified type in cargo of entity
	 **/
	proto native EntityAI CreateEntityInCargo (string typeName);
	/**
	 * @brief	Create Entity of specified type in cargo of entity at coordinates (row, col)
	 * @param	typeName		type to create
	 * @param	row		the row of cargo to be created at
	 * @param	col		the column of cargo to be created at
	 **/
	proto native EntityAI CreateEntityInCargoEx (string typeName, int idx, int row, int col);

	proto native bool HasEntityInCargo (notnull EntityAI e);
	proto native bool HasEntityInCargoEx (notnull EntityAI e, int idx, int row, int col);
	proto native bool CanAddEntityInCargo (notnull EntityAI e);
	proto native bool CanAddEntityInCargoEx (notnull EntityAI e, int idx, int row, int col);
	//proto native bool AddEntityInCargo (notnull EntityAI owner, EntityAI cargo);
	//proto native bool AddEntityInCargoEx (notnull EntityAI owner, notnull EntityAI e, int idx, int row, int col);
	proto native bool CanRemoveEntityInCargo (notnull EntityAI e);
	proto native bool CanRemoveEntityInCargoEx (notnull EntityAI e, int idx, int row, int col);
	///@} cargo

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

BorizzK Я на каком-то из патчей пытался созданную вещь под ногами у игрока такой функцией переместить в инвентарь, функция есть, комманда правильная, а не делало ничего. Это что называется из любопытного.
Писать в профиль сервера игроков? Ну идея неплохая, только слысл? Все то же самое реализовано и так уже в официальной базе, игроки сохраняются, проблем с этим не наблюдаю. да и недостаток в виде отсутствия возможности менять себя остается.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну как бы вещи которые УЖЕ созданы перемещаются не теми функциями

В данном случае нужно создавать новые

и они создаются где надо и как надо

То же касается получения свойств

Но получается довольно громоздкий код тк надо проходить неск вложенных циклов

Впрочем после компиляции движком код занимает пару килобайт и во время выполнения не влияет на производительность

Вобщем движок на самом деле здорово оптимизирует код

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, BorizzK сказал:

Ну как бы вещи которые УЖЕ созданы перемещаются не теми функциями

В данном случае нужно создавать новые

и они создаются где надо и как надо

То же касается получения свойств

Но получается довольно громоздкий код тк надо проходить неск вложенных циклов

Впрочем после компиляции движком код занимает пару килобайт и во время выполнения не влияет на производительность

Вобщем движок на самом деле здорово оптимизирует код

 

 

 

 

когда ты вещи создаешь, они создаются либо в руках, либо в свободной ячейке инвентаря, при услови если оно влазит туда. опять же, это не правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new Есть функции которые

1 Проверяют и возвращают тру если вещь поместится в конкретный контейнер

2 Создают предмет в конкретном слоте конкретного контейнера

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

BorizzK вот теперь отсюда вытекает следующий вопрос. ТЗ состоит в том, чтобы  разместить в инвентаре (например, контейнере) 4 вещи, при том заранее известно, что вручную эти вещи разместить там реально и они там поместятся полностью. Пытаемся спавнить добавлением в инвентарь - вещи спавнятся так, как им вздемается, т.е. в первое обнаруженное свободное место в слотах контейнера. Т.е. априори в конце получаем, что хотя бы 1 ваще не появится в нем. Встает вопрос - а каким же образом разместить в этом контейнере вещи так, как это было у игрока? Грубо говоря так, чтобы они все там поместились, т.к. заведомо известно, что они все там были и помещаются 100%

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: KING324
      Всем привет,хотелось бы узнать как можно получить кол-во нар в верталёте.
      написал  такой код,но работает почему то не на всей технике
      _array = []; for "_i" from -1 to 3 do { _weapons = _vehicle weaponsTurret [_i]; if((count _weapons) > 0) then { { _weapon = _weapons select _forEachIndex ; _ammo = _vehicle ammo _weapon; _array set [count _array,[_i,[_weapon,_ammo]]]; } forEach _weapons; }; }; hint format["%1 ",_array]; copyToClipboard str _array;  
    • Автор: CrHD
      Добрый день!
      Расскажите, пожалуйста, каким образом сервисы типа gametracker получают список игроков на сервере? 

      Судя по их инструкции им хватает только ip и порта для трекинга. Без всякой авторизации. Если эти данные смотрят в мир, то как я могу их забрать?
      Меня интересуют сервера Arma 2 Dayz mod.
    • Автор: OXIDE
      Добрый день. Хотелось бы сделать аналог рукопашного боя, как в DayZ Sa. Игрок подходит к другому, нажимает на кнопку в скролл меню. Второй теряет кровь\сознание и т.д.
      Есть возможность запилить такой скрипт? Игроки просят. 
    • Автор: Ramhha
      Где можно узнать ID всех предметов, техники и прочего для DayZ Mod?
    • Автор: hekut144
      Вопрос насчет nearestObjects, выделение всего кроме игрока, как реализовать, есть допустим блок 
       
      {   } forEach (nearestObjects [player, [], 10]);   Вот мне как-то нужно дабы в роли _x выступало все кроме игрока, как так сделать?