Данная статья была написана по реквесту «Роман Мурашкин«. Свой реквест, вы можете оставить в группе ВК или в комментариях к уроку.
Предисловие
В ZDoom существуют боты (на подобии с кс го). Их можно расставлять по карте, симулируя мультиплеерный режим. Боты имеют равное с игроком, количество здоровья и могут использовать оружие (например BFG или Двухстволка). Так как, боты являются акторами, то их можно замораживать, менять скорость и здоровье. В добавок к этому, через ACS, можно менять оружие бота, и его спрайт, и все это на лету. Сейчас мы подробно разберем этих ботов.
Создаем ботов.
«ScriptedMarine» — это простейший бот. Все что он умеет — это ходить по карте, тем не менее, на основе него, было сделано куча ботов с разным оружием. Находятся они во вкладке Marines (Doom Builder).
Разные боты имеют разное оружие например:
- Marine (chaingun) — имеет пулемет
- Marine (pistol) — имеет пистолет
И так далее…
Если поставить такого бота на карту, то он начнет вас атаковать. Ладно, перейдем к работе с ACS.
ACS комманды
SetMarineWeapon
Комманда SetMarineWeapon заменяет оружие нашего бота. Синтаксис у него следующий:
SetMarineWeapon(tid, оружие);
- tid — задает tid бота
- оружие — сюда нужно передавать константу, посмотреть список констант можно на вики.
Таким образом, можно менять оружие, нашего бота. Перейдем к следующей комманде.
Меняем скин, нашего бота (SetMarineSprite)
Данная комманда — заменяет внешний вид нашего бота. Синтаксис тут следующий:
SetMarineSprite(tid, класс_актора);
- tid — указывает tid бота
- класс_актора — указывает актор в котором прописан внешний вид актора.
Класс актора создаётся в DECORATE по следующему шаблону:
класс_актора
{
Sprite первые_4_буквы_спрайта
Frames "начальный_кадр"
}
- класс_актора — название которое будет использоваться в SetMarineSprite
- первые_4_буквы_спрайта — первые 4 буквы спрайта (например PLAY).
- начальный_кадр — указывает начальный кадр изображения (по умолчанию «A«)
С помощью SetMarineSprite вы сможете изменять скин бота, прямо во время игры.
В качестве примера, создадим скрипт, который будет давать нашему боту рейлган, а также, сменит скин на барона. Для этого, пропишем следующие строки в DECORATE:
randSprite
{
Sprite BOS2
Frames "A"
}
Таким образом, мы создали скин.
И в ACS:
script 1 (void)
{
SetMarineWeapon(1, MARINEWEAPON_Railgun);
SetMarineSprite(1,"randSprite");
}
Привязали этот скин к нашему боту, а также, дали рейлган. В итоге, у нас получился барон стреляющий рейлганом.