Делаем мод на спавн врагов скриптами в Fallout 4 - часть 4 - настраиваем спавн по типу локации
В этом уроке научимся скриптами определять, какой тип врагов обитает на текущей локации и подгоним спавн под них. Также выведем его в МСМ меню дроп-списком.
Предыдущая статья:
Добавим необходимые переменные
В позапрошлом уроке мы узнали, что в редакторе Creation Kit у каждой локации есть набор ярлыков/ключевых слов/кейвордов. Среди них есть и такие, что говорят о типе населяющих локацию противников.
Добавим этот и другие аналогичные кейворды в скрипт:
Соответственно, добавим и ссылки на акторов для спавна, но под конец докинем переменные для транзита типа актора между функциями ActorType , для транзита ссылки на локацию CurrentLocation и переменную uiLocationEnemyType для МСМ меню. Ее используем для дроп-списка:
После добавления новых переменных не забывайте компилировать скрипт и заполнять ссылки в Properties через кнопку Auto-Fill.
Внесем переменные в скрипты
Поправим событие перехода между локациями. Занесем место, куда игрок переходит, в транзитную переменную и вызовем новую функцию, которую распишем ниже:
Теперь создадим функцию CheckLocEnemyType, которая будет проверять кейворды локации, определять тип врагов на ней и заносить подходящего врага в транзитную переменную ActorType:
Добавим дроп-список в МСМ меню
Цифра в переменной uiLocationEnemyType нужна для дроп-списка в меню МСМ. Собственно, я сразу покажу как его оформлять. Запись дроп-листа выглядит так:
Как можно догадаться, в списке options написаны по порядку тексты, соответствующие разным значениям переменной uiLocationEnemyType, начиная с 0.
Подобным образом можно настраивать различные переключатели параметров. Выглядит красивее, чем банальное переключение циферок.
Поправим спавнер
Напоследок, заменим в скрипте непосредственно спавна актора на транзитную переменную:
Вот и все, теперь спавниться будут не рейдеры, а подходящие по типу локации противники.
Также я снизила расстояние разброса акторов в команде a0.Moveto(SpawnMarker, Utility.RandomInt(-10, 10), Utility.RandomInt(-10, 10), abMatchRotation = true) со 100 до 10.
Теперь враги спавнятся, но все еще стоят на месте. Следующий шаг - заставить их куда-нибудь идти, к игроку или центру локации. Я уже затестила и внедрила это в мод, так что скоро распишу, как это делается.