Автор | Сообщение |
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 =
| 250 |
Doom Rate: 1.82 Posts quality: +111 |
Отправлено: 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 =
| 250 |
Doom Rate: 1.82 Posts quality: +111 |
Отправлено: 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 -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 29.06.20 11:19:08 | | | bolon пишет: | В ACS такого не нашел, возможно плохо искал. |
На сколько я помню, не было динамических массивов из-за чего я когда писал инвентарь, намучился прилично | |
|
1 |
3 |
1 |
|
|
| |
Shadowman UAC General
| 8389 |
Doom Rate: 2.08 Posts quality: +1986 |
Отправлено: 29.06.20 11:21:46 | | | bolon
Интересный инвентарь, спасибо. Положил к себе в примеры скриптов, может пригодится.
Только не понял - там инвентарь для заданных предметов дума? Если создавать свои вещи, то нужно ли им в декорэйте что-то специфическое писать, чтобы скрипт понимал, как их правильно складывать в инвентарь? | |
|
1 |
7 |
2 |
|
|
| |
ZZYZX - UAC Commissar -
| | 6284 |
Doom Rate: 1.65 Posts quality: +1630 |
Отправлено: 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: +1630 |
Отправлено: 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: +1630 |
Отправлено: 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 -
| | 4168 |
Doom Rate: 1.87 Posts quality: +949 |
Отправлено: 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 получат. Удачи в "разработках", но без нас уже. |
|
|
| |