Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
ACS. Простой инвентарь с мышкой. 1, 2  След.
   Список разделов - Местечко мапперов и моддеров - ACS. Простой инвентарь с мышкой.Ответить
АвторСообщение
bolon
- Lance Corporal -
Next rank: = Lance Corporal = after 8 points
152

Doom Rate: 9.5

Posts quality: +28
Ссылка на пост №1 Отправлено: 27.06.20 16:38:59

Сделал инвентарь с мышкой, на чистом ACS. Скачать его можно на MEGA. :pc:
Скачать 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
3
soldierDude
= Master Corporal =
Next rank: - Sergeant - after 46 points
244

Doom Rate: 1.85

Posts quality: +111
Ссылка на пост №2 Отправлено: 27.06.20 18:41:52
Здорово. А насчет массивов, разве у ACS нет динамического распределения памяти?
Да и кстати, можно связать выбор мышкой предметов, что на поясном инвентаре (который есть со времен Hexen или Heretic).

Рейтинг сообщения: +1, отметил(и): bolon
bolon
- Lance Corporal -
Next rank: = Lance Corporal = after 8 points
152

Doom Rate: 9.5

Posts quality: +28
Ссылка на пост №3 Отправлено: 27.06.20 19:00:12
soldierDude пишет:
Здорово. А насчет массивов, разве у ACS нет динамического распределения памяти?

В ACS такого не нашел, возможно плохо искал.
soldierDude пишет:
Да и кстати, можно связать выбор мышкой предметов, что на поясном инвентаре (который есть со времен Hexen или Heretic).

Не знаю как это делается и не уверен, что это возможно в ACS. Вот список комманд инвентаря Вики. Все что я там нашел, это дать, использовать, забрать предмет, а также узнать количество предмета в инвентаре. Ну, и выкинуть его. Как же, порой, не хватает функции которая бы возвращала массив предметов :pc:.

Рейтинг сообщения: -1, отметил(и): alekv, Li$TeR
3
soldierDude
= Master Corporal =
Next rank: - Sergeant - after 46 points
244

Doom Rate: 1.85

Posts quality: +111
Ссылка на пост №4 Отправлено: 27.06.20 20:23:25
bolon
Можно попробовать в ZScript унаследовать класс инвентаря с вектором и перегрузить виртуальные методы добавления / удаления предметов.
В перегрузках вызывать из пространства имен базового класса эти методы, а после них сразу же забивать вектор тем же предметом.
https://zdoom.org/wiki/ZScript_virtual_functions#Inventory
bolon
- Lance Corporal -
Next rank: = Lance Corporal = after 8 points
152

Doom Rate: 9.5

Posts quality: +28
Ссылка на пост №5 Отправлено: 27.06.20 21:20:49
soldierDude пишет:
Можно попробовать в ZScript унаследовать класс инвентаря с вектором и перегрузить виртуальные методы добавления / удаления предметов.
В перегрузках вызывать из пространства имен базового класса эти методы, а после них сразу же забивать вектор тем же предметом.
https://zdoom.org/wiki/ZScript_virtual_functions#Inventory

Я плохо разбираюсь в ZScript, поэтому врядли смогу такое осуществить, но за совет, спасибо.

Рейтинг сообщения: -1, отметил(и): alekv, Li$TeR
3
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +948
Ссылка на пост №6 Отправлено: 29.06.20 11:19:08
bolon пишет:
В ACS такого не нашел, возможно плохо искал.

На сколько я помню, не было динамических массивов из-за чего я когда писал инвентарь, намучился прилично =)
1 3 1
Shadowman
= UAC Marshal =
Next rank: UAC General after 161 points
8039

Doom Rate: 2.09

Posts quality: +1768
Ссылка на пост №7 Отправлено: 29.06.20 11:21:46
bolon
Интересный инвентарь, спасибо. Положил к себе в примеры скриптов, может пригодится.
Только не понял - там инвентарь для заданных предметов дума? Если создавать свои вещи, то нужно ли им в декорэйте что-то специфическое писать, чтобы скрипт понимал, как их правильно складывать в инвентарь?
1 7 2
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №8 Отправлено: 29.06.20 15:11:11
bolon пишет:
В ACS такого не нашел, возможно плохо искал.

Динамическое распределение памяти существует для глобальных массивов (которые через циферку объявляются).
Ещё можно записывать нужные данные в строку. Но тогда есть шанс что-нибудь сломать внезапно)

Рейтинг сообщения: -9, отметил(и): JSO x, CYCJIUK, Li$TeR, HellWalker557, ElgerElg
2 2 1
Landsberg
= Lance Corporal =
Next rank: - Master Corporal - after 4 points
196

Doom Rate: 1.96

Posts quality: +22
Ссылка на пост №9 Отправлено: 30.06.20 07:59:20
Shadowman пишет:
Только не понял - там инвентарь для заданных предметов дума? Если создавать свои вещи, то нужно ли им в декорэйте что-то специфическое писать, чтобы скрипт понимал, как их правильно складывать в инвентарь?


Чекнул - да, вновь добавленные вещи придётся дописывать в код инвентаря.
bolon
- Lance Corporal -
Next rank: = Lance Corporal = after 8 points
152

Doom Rate: 9.5

Posts quality: +28
Ссылка на пост №10 Отправлено: 30.06.20 19:20:40
Shadowman пишет:
Только не понял - там инвентарь для заданных предметов дума?

Да, предметы задаются в массиве posible_items
Shadowman пишет:
Если создавать свои вещи, то нужно ли им в декорэйте что-то специфическое писать, чтобы скрипт понимал, как их правильно складывать в инвентарь?

В декорейте ничего писать не нужно. Чтобы добавить в инвентарь новый предмет, нужно в массив posible_items добавить название_класса оружия, и, в массиве item_icons добавить название иконки. Разумеется, индексы у названия_класса_оружия и иконка_оружия - должны совпадать.

Рейтинг сообщения: 0, отметил(и): alekv, JSO x, Li$TeR
3
Li$TeR
- Lance Corporal -
Next rank: = Lance Corporal = after 18 points
142

Doom Rate: 0.55

Posts quality: +170
Ссылка на пост №11 Отправлено: 01.07.20 12:24:28
Как говорится, шах и мат, братан(цэ).



Возможности меню:
->ПКМ выбрать слот, и дропнуть все вещи из слота
->ЛКМ юзать вещи или оружки из слота
->Меню вещей автоматически закрывается, если лезешь в меню оружек, и наоборот
->возможность биндить вещи из меню
->Возможность скроллинга меню
->Возможность увеличивать или умешать ячейки, в зависимости от твоего желания CVAR'ом(для разных разрешений)
И эт так, что просто первое вспомнил.

Рейтинг сообщения: -2, отметил(и): ZeTores, ZZYZX, alekv
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №12 Отправлено: 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
Ссылка на пост №13 Отправлено: 01.07.20 12:46:16
ZZYZX пишет:
это конечно красивая менюшка
но надо заминусить её, потому что листер. как обычно.

Рейтинг сообщения: 0, отметил(и): ZeTores
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1630
Ссылка на пост №14 Отправлено: 01.07.20 13:18:49
Eagle_
Я написал, за что заминусил.

Рейтинг сообщения: -10, отметил(и): alekv, Doomstalker, CYCJIUK, Li$TeR, HellWalker557, ElgerElg
2 2 1
Li$TeR
- Lance Corporal -
Next rank: = Lance Corporal = after 18 points
142

Doom Rate: 0.55

Posts quality: +170
Ссылка на пост №15 Отправлено: 01.07.20 16:43:05
ZZYZX пишет:
Не, это конечно красивая менюшка, но выглядит как если бы какой-нибудь архитектор пришёл, показал свой проект и сказал что это круче чем карточный домик.

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

Рейтинг сообщения: 0, отметил(и): alekv
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +948
Ссылка на пост №16 Отправлено: 01.07.20 17:20:31
Как насчет кастомизации и простоты интеграции в проекты?
1 3 1
bolon
- Lance Corporal -
Next rank: = Lance Corporal = after 8 points
152

Doom Rate: 9.5

Posts quality: +28
Ссылка на пост №17 Отправлено: 01.07.20 17:23:24
Li$TeR пишет:
Ага, а еще сдается мне, что меню сделано на основе нашего, т.к. тело создавшее топик, подозрительно похоже на то, что я пустил в дискорд.

Твой код, я даже не смотрел. Весь код я писал сам и с нуля. Единственное, поглядывал на инвентарь alexv, что существенно ускорило написание кода.

Рейтинг сообщения: -1, отметил(и): alekv, Doomstalker, Eagle_, Li$TeR
3
Li$TeR
- Lance Corporal -
Next rank: = Lance Corporal = after 18 points
142

Doom Rate: 0.55

Posts quality: +170
Ссылка на пост №18 Отправлено: 01.07.20 17:27:01
Короч ясно, в дискорде послан нахуй. Всегда обожал это гниломунити: "всех всегда так ВНЕЗАПНО осеняет, когда доберутся до LSD", а еще потом реально " не понимаете" почему я всех вас шлю?)

Рейтинг сообщения: -3, отметил(и): ZZYZX, alekv, bolon
bolon
- Lance Corporal -
Next rank: = Lance Corporal = after 8 points
152

Doom Rate: 9.5

Posts quality: +28
Ссылка на пост №19 Отправлено: 01.07.20 17:33:13
Li$TeR пишет:
Короч ясно, в дискорде послан нахуй. Всегда обожал это гниломунити: "всех всегда так ВНЕЗАПНО осеняет, когда доберутся до LSD"

А вот это было обидно. Я в правду не воровал твой код. Принцип создания я понял покопавшись в коде инвентаря alexv. Оказалось что он прост как 2 копейки, SetWepon выбирает оружие, через GetInput получаем yaw/pitch мышки, а также проверяем нажата ли кнопка. И с помощью цикла проверяем мышку, на нахождение в любой из ячеек.

Рейтинг сообщения: +3, отметил(и): Артём, JSO x, StormCatcher77, Doomstalker, Li$TeR
3
Li$TeR
- Lance Corporal -
Next rank: = Lance Corporal = after 18 points
142

Doom Rate: 0.55

Posts quality: +170
Ссылка на пост №20 Отправлено: 01.07.20 17:38:05
bolon пишет:
А вот это было обидно. Я в правду не воровал твой код. Принцип создания я понял покопавшись в коде инвентаря alexv. Оказалось что он прост как 2 копейки, SetWepon выбирает оружие, через GetInput получаем yaw/pitch мышки, а также проверяем нажата ли кнопка. И с помощью цикла проверяем мышку, на нахождение в любой из ячеек.

Да мне по барабану. До LSD инвентаря с мышкой не существовало вообще на Зандре как минимум. И я только что и делаю, что вижу ,как "всех" ВНЕЗАПНО осеняет, только тогда, когда файл с LSD получат. Удачи в "разработках", но без нас уже.

Рейтинг сообщения: -2, отметил(и): StormCatcher77, bolon
Страница 1 из 2Перейти наверх 1, 2  След.
   Список разделов - Местечко мапперов и моддеров - ACS. Простой инвентарь с мышкой.