Предисловие
Данный урок является прямым продолжением урока DECORATE. Добавляем поверапы (1).
В данном уроке, мы рассмотрим создания комбинированного поверапа (например, скорость + высокий прыжок), а также изучим новые свойства.
Также, скачайте картинку нового поверапа на MEGA. И поместите её между маркерами S_START и S_END, также не забывайте про смещение.
Работаем с инвентарем.
Как вы уже поняли, в Doom есть инвентарь. В нем хранятся предметы, которые можно использовать в любое время (как в Duke Nukem). Чтобы открыть инвентарь, нужно назначить клавиши. Это делается через Options -> Customize Controls -> Inventory. (если вы используете ввесию gzdoom 4, и выше)
В прошлом уроке я использовал флаг
+INVENTORY.AUTOACTIVATE
чтобы избежать попадания поверапа в инвентарь. Уберите этот флаг и запустить свой wad.
Теперь, при поднятии поверапа, он добавляется в инвентарь. В статусбаре мы теперь видим наш предмет.
Вы можете переключаться между предметами, а также активировать их, нажимая на кнопки, которые вы назначили в Options -> Customize Controls -> Inventory.
Изучаем новые возможности.
Вы можете добавить накладываемый на экран цвет при помощи свойства powerup.color. Синтаксис у него следующий:
powerup.color цвет непрозрачность
- цвет — название цвета, цвета можете посмотреть на вики.
- непрозрачность — число от 0 до 1, 1- цвет полностью закрывает экран, 0 — цвет не видно.
Добавьте к power1 следующее свойство.
powerup.color Yellow 0.3
Теперь, при активации поверапа, экран окрашивается в желтый.
Соединяем все поверапы.
Чтобы соединить все поверапы в одном предмете, нужно создать предмет, при соприкосновении с которым игрок получает все поверапы к себе в инвентарь, а там уже, они активируются, благодаря флагу +Inventory.AutoActivate.
Мы создадим актор наследуемый от CustomInventory, это и будет нашим предметом.
CustomInventory — это класс инвентаря который реализует стейты:
- PickUp — поднятие предмета (соприкосновение с ним)
- Use — использование предмета
- Drop — выкидывание предмета
Нас интересует только PickUp.
Теперь, добавьте следующий код к себе в DECORATE:
actor GameMode : CustomInventory
{
+FloatBob
states
{
Spawn:
SUPR A 1
loop
Pickup:
TNT1 A 0 A_GiveInventory("power1",1)
TNT1 A 0 A_GiveInventory("power2",1)
TNT1 A 0 A_GiveInventory("power3",1)
TNT1 A 0 A_GiveInventory("power4",1)
TNT1 A 0 A_GiveInventory("power5",1)
TNT1 A 0 A_GiveInventory("power6",1)
TNT1 A 0 A_GiveInventory("power7",1)
TNT1 A 0 A_GiveInventory("power8",1)
TNT1 A 0 A_GiveInventory("power9",1)
TNT1 A 0 A_GiveInventory("power10",1)
TNT1 A 0 A_GiveInventory("power11",1)
stop
}
}
Большую часть кода я рассматривал в предыщих уроках. DECORATE. Cоздание декораций(1).
Разберем комманду A_GiveInventory, синтаксис у неё следующий:
A_GiveInventory("название_предмета",количество)
- название_предмета — указывает какой предмет получит игрок.
- количество — указывает сколько название_предмета получит игрок.
Разумеется, в акторе power1, нужно добавить комманду:
+Inventory.AutoActivate
Чтобы поверап активировался — автоматически.
Ну вот и все, сохраняйте и запускайте. Заспавнить поверап, можно коммандой «summon gamemode» в консоли.