Теперь, когда вы знаете структуру функции, пришло время создать собственную функцию или даже две!
В последнем упражнении мы рассмотрели строки кода, необходимые для нанесения урона персонажу игрока в Fortnite. Будет лучше, если вам не придётся печатать одни и те же строки всякий раз, когда вам понадобится этот код.
-
Объявите функцию
HurtPlayer(). Она будет иметь возвращаемый типvoid, что означает, что функция не будет возвращать значение. Поместите объявление функции в самый конец своего файла Verse. Тело функции — это код из Урока 5: «Практика», так что обратитесь к нему, если нужно освежить свои знания.HurtPlayer() : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Damage(50.0)Вы не можете определить функцию внутри другой функции, поэтому убедитесь, что все ваши функции имеют отступ на том же уровне, что и
OnBegin(). -
Теперь у вас есть функция, которую можно использовать всякий раз, когда потребуется нанести урон персонажу. Но объявление функции не выполняет код в её теле. Для этого вам нужно вызвать функцию. Обязательно вызывайте эти функции внутри
OnBegin().HurtPlayer() Print("Игрок получил урон") -
Теперь вы, возможно, догадались, что также существует метод, который лечит персонажа. Он называется
Heal(), и вы можете вызывать его точно так же, какDamage(). Создайте свою функциюHealPlayer()в конце файла Verse, используя этот код.HealPlayer() : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Heal(20.0) -
Теперь добавьте вызов
HealPlayer()к вызовам функций в телеOnBegin().HurtPlayer() Print("Игрок получил урон") Sleep(5.0) HealPlayer() Print("Игрок получил лечение")
Обратите внимание, что появился новый вызов функции Sleep(). По сути, Sleep() заставляет программу ждать, прежде чем продолжить выполнение следующего за вызовом кода. Время ожидания определяется параметром, который передаётся в Sleep() и задаётся в секундах. (Вы узнаете больше о параметрах в следующем уроке.) Если не вызвать Sleep(), функция HealPlayer() будет запускаться сразу после HurtPlayer() и вы не заметите эффекта от вызова двух функций.
Полный сценарий
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Playspaces }
using { /Verse.org/Simulation }
using { /Verse.org/Verse }
hello_world_device := class(creative_device):
# Выполняется при запуске устройства в работающей игре
OnBegin<override>()<suspends>:void=
HurtPlayer()
Print("Игрок получил урон")
Sleep(5.0)
HealPlayer()
Print("Игрок получил лечение")
HurtPlayer() : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Damage(50.0)
HealPlayer() : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Heal(20.0)
Следующий урок
%learn-code-basics-7-specifying-the-result-of-a-function-in-verse:topic%