| Автор | Сообщение | 
bolon - Lance Corporal -
   |  | 152 |  
   Doom Rate: 9.5 Posts quality: +28 | 
  Отправлено: 27.06.20 16:38:59 |  |  
 |  
 
 Сделал инвентарь с мышкой, на чистом ACS. Скачать его можно на MEGA.   
 Скачать wad
 Версия, для добавления в свои проекты: Скачать pk3
 Настройка инвентаря
 #define ITEM_NUMBER 6 
 ITEM_NUMBER  - указывает максимальное количество предметов в инвентаре.
 str posible_items[ITEM_NUMBER]
str item_icons[ITEM_NUMBER] 
 В этих строках хранится что-то типа словаря. Некая база данных, из которой инвентарь черпает информацию о предмете.
 str your_items[ITEM_NUMBER];
int item_slots[ITEM_NUMBER];  
 your_items - главный массив, в котором содержаться все предметы инвентаря.
 item_slots - массив, связанный с массивом your_items, указывающий наличие предмета в слоте.
 int img_size = 64.0; 
 Размер ячейки в пикселях (64x64)
 bool debug_on = true; 
 Переменная которая включает/отключает отладочную информацию.
 Если хотите, поменять количество ячеек инвентаря, то в скрипте "DrawInventory" найдите функцию createTable и поменяйте количество столбцов и рядов, также можно задать изначальное смещение по следующему синтаксису
 createTable(x, y, количество_рядов, количество_столбцов)  |  
 Рейтинг сообщения:  +8, отметил(и):  Shadowman, Konrad_GRAU, BETEPAH[iddqd], VladGuardian, Артём, alekv, DeXiaZ, JSO x, StormCatcher77, Doomstalker, camper, Eagle_, Li$TeR |  
  | 
 |  | 
soldierDude = Master Corporal =
   |  | 266 |  
   Doom Rate: 1.82 Posts quality: +123 | 
  Отправлено: 27.06.20 18:41:52 |  |  
 |  
Здорово. А насчет массивов, разве у ACS нет динамического распределения памяти?
 Да и кстати, можно связать выбор мышкой предметов, что на поясном инвентаре (который есть со времен Hexen или Heretic). |  
 Рейтинг сообщения:  +1, отметил(и):  bolon |  
  | 
 |  | 
bolon - Lance Corporal -
   |  | 152 |  
   Doom Rate: 9.5 Posts quality: +28 | 
  Отправлено: 27.06.20 19:00:12 |  |  
 |  
 	  | soldierDude пишет: | 	 		  | Здорово. А насчет массивов, разве у ACS нет динамического распределения памяти?  | 	  
 В ACS такого не нашел, возможно плохо искал.
  	  | soldierDude пишет: | 	 		  | Да и кстати, можно связать выбор мышкой предметов, что на поясном инвентаре (который есть со времен Hexen или Heretic). | 	  
 Не знаю как это делается и не уверен, что это возможно в ACS. Вот список комманд инвентаря Вики. Все что я там нашел, это дать, использовать, забрать предмет, а также узнать количество предмета в инвентаре. Ну, и выкинуть его. Как же, порой, не хватает функции которая бы возвращала массив предметов    . |  
  |  
  | 
 |  | 
soldierDude = Master Corporal =
   |  | 266 |  
   Doom Rate: 1.82 Posts quality: +123 | 
  Отправлено: 27.06.20 20:23:25 |  |  
 |  
bolon
 Можно попробовать в ZScript унаследовать класс инвентаря с вектором и перегрузить виртуальные методы добавления / удаления предметов.
 В перегрузках вызывать из пространства имен базового класса эти методы, а после них сразу же забивать вектор тем же предметом.
 https://zdoom.org/wiki/ZScript_virtual_functions#Inventory |  
 |  
  | 
 |  | 
bolon - Lance Corporal -
   |  | 152 |  
   Doom Rate: 9.5 Posts quality: +28 | 
  Отправлено: 27.06.20 21:20:49 |  |  
 |  
 	  | soldierDude пишет: | 	 		  Можно попробовать в ZScript унаследовать класс инвентаря с вектором и перегрузить виртуальные методы добавления / удаления предметов.
 В перегрузках вызывать из пространства имен базового класса эти методы, а после них сразу же забивать вектор тем же предметом.
 https://zdoom.org/wiki/ZScript_virtual_functions#Inventory | 	  
 Я плохо разбираюсь в ZScript, поэтому врядли смогу такое осуществить, но за совет, спасибо. |  
  |  
  | 
 |  | 
alekv - Colonel -
   |   |  | 4170 |  
   Doom Rate: 1.87 Posts quality: +950 | 
  Отправлено: 29.06.20 11:19:08 |  |  
 |  
 	  | bolon пишет: | 	 		  | В ACS такого не нашел, возможно плохо искал. | 	  
 На сколько я помню, не было динамических массивов из-за чего я когда писал инвентарь, намучился прилично   |  
 |  
  | 
| 1 | 
3 | 
1 | 
  | 
 
 
 |  
  |  | 
Shadowman UAC General
   |  | 8856 |  
  Doom Rate: 2.03 Posts quality: +2379 | 
  Отправлено: 29.06.20 11:21:46 |  |  
 |  
bolon
 Интересный инвентарь, спасибо. Положил к себе в примеры скриптов, может пригодится.
 Только не понял - там инвентарь для заданных предметов дума? Если создавать свои вещи, то нужно ли им в декорэйте что-то специфическое писать, чтобы скрипт понимал, как их правильно складывать в инвентарь? |  
 |  
  | 
| 1 | 
7 | 
2 | 
  | 
 
 
 |  
  |  | 
ZZYZX - UAC Commissar -
   |   |  | 6284 |  
   Doom Rate: 1.65 Posts quality: +1633 | 
  Отправлено: 29.06.20 15:11:11 |  |  
 |  
 	  | bolon пишет: | 	 		  | В ACS такого не нашел, возможно плохо искал.  | 	  
 Динамическое распределение памяти существует для глобальных массивов (которые через циферку объявляются).
 Ещё можно записывать нужные данные в строку. Но тогда есть шанс что-нибудь сломать внезапно) |  
  |  
  | 
| 2 | 
2 | 
1 | 
  | 
 
 
 |  
  |  | 
Landsberg = Lance Corporal =
   |  | 196 |  
   Doom Rate: 1.96 Posts quality: +22 | 
  Отправлено: 30.06.20 07:59:20 |  |  
 |  
 	  | Shadowman пишет: | 	 		  | Только не понял - там инвентарь для заданных предметов дума? Если создавать свои вещи, то нужно ли им в декорэйте что-то специфическое писать, чтобы скрипт понимал, как их правильно складывать в инвентарь? | 	  
 
 Чекнул - да, вновь добавленные вещи придётся дописывать в код инвентаря. |  
 |  
  | 
 |  | 
bolon - Lance Corporal -
   |  | 152 |  
   Doom Rate: 9.5 Posts quality: +28 | 
  Отправлено: 30.06.20 19:20:40 |  |  
 |  
 	  | Shadowman пишет: | 	 		  | Только не понял - там инвентарь для заданных предметов дума? | 	  
 Да, предметы задаются в массиве posible_items
  	  | Shadowman пишет: | 	 		  | Если создавать свои вещи, то нужно ли им в декорэйте что-то специфическое писать, чтобы скрипт понимал, как их правильно складывать в инвентарь? | 	  
 В декорейте ничего писать не нужно. Чтобы добавить в инвентарь новый предмет, нужно в массив posible_items добавить название_класса оружия, и, в массиве item_icons добавить название иконки. Разумеется, индексы у названия_класса_оружия и иконка_оружия - должны совпадать. |  
  |  
  | 
 |  | 
Li$TeR - Lance Corporal -
   |  | 142 |  
  Doom Rate: 0.55 Posts quality: +170 | 
  Отправлено: 01.07.20 12:24:28 |  |  
 |  
Как говорится, шах и мат, братан(цэ).
  
  
  
 Возможности меню:
 ->ПКМ выбрать слот, и дропнуть все вещи из слота
 ->ЛКМ юзать вещи или оружки из слота
 ->Меню вещей автоматически закрывается, если лезешь в меню оружек, и наоборот
 ->возможность биндить вещи из меню
 ->Возможность скроллинга меню
 ->Возможность увеличивать или умешать ячейки, в зависимости от твоего желания CVAR'ом(для разных разрешений)
 И эт так, что просто первое вспомнил. |  
  |  
  | 
 |  | 
ZZYZX - UAC Commissar -
   |   |  | 6284 |  
   Doom Rate: 1.65 Posts quality: +1633 | 
  Отправлено: 01.07.20 12:36:16 |  |  
 |  
Выебнулся.
 Не, это конечно красивая менюшка, но выглядит как если бы какой-нибудь архитектор пришёл, показал свой проект и сказал что это круче чем карточный домик. |  
 Рейтинг сообщения:  -7, отметил(и):  alekv, StormCatcher77, Doomstalker, CYCJIUK, Landsberg, Li$TeR, soldierDude, UnknDoomer, HellWalker557, ElgerElg |  
  | 
| 2 | 
2 | 
1 | 
  | 
 
 
 |  
  |  | 
Eagle_ Читатель
   Doom Rate: 0 Posts quality: +33 | 
  Отправлено: 01.07.20 12:46:16 |  |  
 |  
 	  | ZZYZX пишет: | 	 		  | это конечно красивая менюшка | 	  но надо заминусить её, потому что листер. как обычно. |  
 Рейтинг сообщения:  0, отметил(и):  ZeTores |  
  | 
 |  | 
ZZYZX - UAC Commissar -
   |   |  | 6284 |  
   Doom Rate: 1.65 Posts quality: +1633 | 
  Отправлено: 01.07.20 13:18:49 |  |  
 |  
Eagle_
 Я написал, за что заминусил. |  
  |  
  | 
| 2 | 
2 | 
1 | 
  | 
 
 
 |  
  |  | 
Li$TeR - Lance Corporal -
   |  | 142 |  
  Doom Rate: 0.55 Posts quality: +170 | 
  Отправлено: 01.07.20 16:43:05 |  |  
 |  
 	  | ZZYZX пишет: | 	 		  | Не, это конечно красивая менюшка, но выглядит как если бы какой-нибудь архитектор пришёл, показал свой проект и сказал что это круче чем карточный домик. | 	  
 Ага, а еще сдается мне, что меню сделано на основе нашего, т.к. тело создавшее топик, подозрительно похоже на то, что я пустил в дискорд. Так что котенька, н ея выебнулся, а возможно тут кто-то очередной раз что-то пытается выдать за свое. |  
 Рейтинг сообщения:  0, отметил(и):  alekv |  
  | 
 |  | 
alekv - Colonel -
   |   |  | 4170 |  
   Doom Rate: 1.87 Posts quality: +950 | 
  Отправлено: 01.07.20 17:20:31 |  |  
 |  
| Как насчет кастомизации и простоты интеграции в проекты? |  
 |  
  | 
| 1 | 
3 | 
1 | 
  | 
 
 
 |  
  |  | 
bolon - Lance Corporal -
   |  | 152 |  
   Doom Rate: 9.5 Posts quality: +28 | 
  Отправлено: 01.07.20 17:23:24 |  |  
 |  
 	  | Li$TeR пишет: | 	 		  | Ага, а еще сдается мне, что меню сделано на основе нашего, т.к. тело создавшее топик, подозрительно похоже на то, что я пустил в дискорд. | 	  
 Твой код, я даже не смотрел. Весь код я писал сам и с нуля. Единственное, поглядывал на инвентарь alexv, что существенно ускорило написание кода. |  
  |  
  | 
 |  | 
Li$TeR - Lance Corporal -
   |  | 142 |  
  Doom Rate: 0.55 Posts quality: +170 | 
  Отправлено: 01.07.20 17:27:01 |  |  
 |  
| Короч ясно, в дискорде послан нахуй. Всегда обожал это гниломунити: "всех всегда так ВНЕЗАПНО осеняет, когда доберутся до LSD", а еще потом реально " не понимаете" почему я всех вас шлю?) |  
  |  
  | 
 |  | 
bolon - Lance Corporal -
   |  | 152 |  
   Doom Rate: 9.5 Posts quality: +28 | 
  Отправлено: 01.07.20 17:33:13 |  |  
 |  
 	  | Li$TeR пишет: | 	 		  | Короч ясно, в дискорде послан нахуй. Всегда обожал это гниломунити: "всех всегда так ВНЕЗАПНО осеняет, когда доберутся до LSD" | 	  
 А вот это было обидно. Я в правду не воровал твой код. Принцип создания я понял покопавшись в коде инвентаря alexv. Оказалось что он прост как 2 копейки, SetWepon выбирает оружие, через GetInput получаем yaw/pitch мышки, а также проверяем нажата ли кнопка. И с помощью цикла проверяем мышку, на нахождение в любой из ячеек. |  
  |  
  | 
 |  | 
Li$TeR - Lance Corporal -
   |  | 142 |  
  Doom Rate: 0.55 Posts quality: +170 | 
  Отправлено: 01.07.20 17:38:05 |  |  
 |  
 	  | bolon пишет: | 	 		  | А вот это было обидно. Я в правду не воровал твой код. Принцип создания я понял покопавшись в коде инвентаря alexv. Оказалось что он прост как 2 копейки, SetWepon выбирает оружие, через GetInput получаем yaw/pitch мышки, а также проверяем нажата ли кнопка. И с помощью цикла проверяем мышку, на нахождение в любой из ячеек. | 	  
 Да мне по барабану. До LSD инвентаря с мышкой не существовало вообще на Зандре как минимум. И я только что и делаю, что вижу ,как "всех" ВНЕЗАПНО осеняет, только тогда, когда файл с LSD получат. Удачи в "разработках", но без нас уже. |  
  |  
  | 
 |  |