Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • OPG PROJECT

    Группа ВК

    По-настоящему хороший сервер с уникальным модом! 
     Заходи к нам,тебе тут понравится!
  • 0
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(); и далее работает

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

...

 

Спасибо!

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Вспомнил

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

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

 

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

 

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

 

 

 

Share this post


Link to post
Share on other sites



  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

 

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

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

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

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

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

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

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

 

 

 

 

Share this post


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

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

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

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

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

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

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

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

 

 

 

 

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

Share this post


Link to post
Share on other sites
  • 0

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

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

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

 

 

 

Share this post


Link to post
Share on other sites
  • 0

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

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

  • Similar Content

    • By BorizzK
      Вобщем тема такая
       
      1я задачка была такая
      Нужно получить координату на плоскости под углом на расстоянии от текущей координаты
      Задачку решил тут
      Код в итоге таков:
       
      например выведем в лог  координаты точки на плоскости на расстоянии 2м и под углом 90 град (справа) от игрока (вызвав функцию PrintCoords, передав ей в качестве параметра переменную содержащую ссылку на перса игрока)
       
      void PrintCoords(PlayerBase player) { float distance = 2; float anglerotation = 90; Print("Coordinates on the plane at distance " + distance + " and at an angle relative to the player: " + anglerotation + ": " + GetCoords(player, distance, anglerotation).ToString()); } vector GetGoords(PlayerBase player, float distance, float anglerotation) { return GetPosFromDistAndAngle(player.GetPosition(), distance, player.GetOrientation()[0] + anglerotation); } vector GetPosFromDistAndAngle(vector pos, float dist, float angle) { angle = Math.NormalizeAngle(angle) * Math.DEG2RAD; pos[0] = pos[0] + (double)(Math.Sin(angle) * dist); //offset X pos[2] = pos[2] + (double)(Math.Cos(angle) * dist); //offset Y return pos; }  
      Это была задачка 1 и она была решена!
       
      далее надо решить более сложную задачу - она будет номер 2
       
      Надо вычислить координату не на плоскости, а вообще в пространстве, взяв в качестве поправок значения pitch и roll (наклон по поперечной и продольной осям) которые получаются из функции  обьект.GetOrientation() - первое значение масива типа вектор которое возвращает функция - угол на плоскости, второе угол в поперечной оси, третье в продольной (вроде так)
       
      те если игрок, да не важно, просто обьект, имеет наклон в поперечной оси 45 градусов (от так как этот слэш /), то точка под углом на плоскости относительно игрока 90град и расстоянии 2м "справа для него будет 'ниже', чем слева"
       
      врбщем -  нам надо получить координату под улом 90град на плоскости, 45град по вертикали и расстоянии 2м от него слева
       
      воот
       
      и тут у меня мозг взорвался (и почему-то захотелось вискаря)
       
      я понимаю что в данном случае нужно отталкиваться от поперечной вертикальной плоскости... но чет не догоняю как........
       
       
    • By 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;  
    • By CrHD
      Добрый день!
      Расскажите, пожалуйста, каким образом сервисы типа gametracker получают список игроков на сервере? 

      Судя по их инструкции им хватает только ip и порта для трекинга. Без всякой авторизации. Если эти данные смотрят в мир, то как я могу их забрать?
      Меня интересуют сервера Arma 2 Dayz mod.
    • By OXIDE
      Добрый день. Хотелось бы сделать аналог рукопашного боя, как в DayZ Sa. Игрок подходит к другому, нажимает на кнопку в скролл меню. Второй теряет кровь\сознание и т.д.
      Есть возможность запилить такой скрипт? Игроки просят. 
    • By Ramhha
      Где можно узнать ID всех предметов, техники и прочего для DayZ Mod?
×
×
  • 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.