DECORATE. Добавляем поверапы (2).

Предисловие

Данный урок является прямым продолжением урока 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» в консоли.

Итоговый результат.

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!