На этом этапе мы создадим в Verse систему повышения уровня оружия, которая будет использовать устройство выдачи предметов для выдачи нового оружия игрокам, собравшим комбо.
Измените свой остров
Выберите устройство Настройки острова в окне просмотра или на панели Структура.
На панели Сведения задайте следующие параметры:
задайте для параметра Бесконечный запас боеприпасов значение True;
задайте для параметра Бесконечные боеприпасы в магазине значение False. Таким образом мы сохраним для игрока необходимость перезаряжаться, что является ключевым аспектом многих видов оружия в Fortnite.
Выберите устройство выдачи предметов в окне просмотра или на панели Структура.
На панели Сведения задайте следующие параметры:
для параметра Действие при выдаче задайте Очистить инвентарь;
для параметра Выдача задайте Текущий предмет;
удалите все элементы из списка индексов, а затем добавьте следующие:
автомат (ур. 1),
рычажная винтовка (ур. 2),
тяжёлый дробовик (ур. 3),
шестизарядник (ур. 4),
тяжёлый пистолет (ур. 5);
для параметра Получатели задайте Все;
для параметра Выдать при переключении установите значение True;
для параметра Выдать в начале игры установите значение True;
удалите привязки функции Включения и выдача предмета.
Выберите устройство Панель управления счётом в окне просмотра или на панели Структура.
На панели Сведения установите для Отображать обновление счёта в интерфейсе значение True.
Написание кода Verse
Здесь пошагово рассматривается процесс внесения изменений в код. Если вы хотите проверить свою работу, загляните в раздел Полный код, в котором вы сможете ознакомиться с конечным результатом.
Откройте файл
shooting_range_manager_device.verse.Добавьте следующие переменные для хранения ссылки на устройство выдачи предметов, а также для отслеживания свойств уровня предмета.
Verse@editable ItemGranter:item_granter_device = item_granter_device{} @editable MaxWeaponLevel:int = 5 var CurrentWeaponLevel:int = 1Добавьте метод
IncreaseWeaponLevel, который будет увеличивать значение переменной уровня оружия, переходя к следующему предмету.Verse# Increases the player's weapon level by one (up to the maximum value). IncreaseWeaponLevel():void= if: # If able to retrieve the first player and current weapon level isn't maxed, then... Player:player = GetPlayspace().GetPlayers()[0] CurrentWeaponLevel < MaxWeaponLevel then: # Increase weapon level and cycle to the next item. set CurrentWeaponLevel += 1 ItemGranter.CycleToNextItem(Player)Измените метод
OnComboTargetHit, чтобы выполнять вызовIncreaseWeaponLevel.Verse# A hit callback that scores the ComboTarget and resets the combo. OnComboTargetHit():void= AdjustScore(ComboTargetScore) <# --- New Code Start --- #> IncreaseWeaponLevel() <# --- New Code End --- #>Измените метод
AdjustScore, чтобы умножать выдаваемое количество очков в зависимости от уровня оружия.Verse# Adjusts the player's score by the provided value. AdjustScore(Value:int):void= # Start the timer if it hasn't started yet. if (not IsTimerStarted?): StartTimer() <# --- New Code Start --- #> # Sets the score award to the base value of the target multiplied by the current weapon level. ScoreManager.SetScoreAward(Value * CurrentWeaponLevel)Сохраните код Verse и выполните его сборку.
Полный код
using { /Fortnite.com/Devices }
using { /Verse.org/Random }
using { /Verse.org/Simulation }
# A device that manages shooting range gameplay.
shooting_range_manager_device := class(creative_device):
@editable
ScoreManager:score_manager_device = score_manager_device{}
Собираем воедино
Выберите устройство shooting_range_manager_device в окне просмотра или на панели Структура.
На панели Сведения в качестве устройства выдачи предметов выберите ItemGranter.
Примените изменения и протестируйте свой остров:
убедитесь, что оружие меняется после попадания в комбо-мишень (до 5 раз). На пятом уровне оно остаётся без изменений;
убедитесь, что получаемые очки умножаются в зависимости от уровня оружия.