Nun kennst du die Struktur einer Funktion. Somit ist es an der Zeit, eine bzw. zwei eigene zu erstellen.
In der letzten Übung hast du gelernt, welche Codezeilen erforderlich sind, um einem Spieler-Charakter in Fortnite Schaden zuzufügen. Besser noch wäre es, diese immer gleichen Zeilen nicht jedes Mal eingeben zu müssen, wenn du diesen Code brauchst.
Deklariere eine Funktion namens
HurtPlayer(). Der Rückgabetyp wirdvoidlauten – das heißt, dass die Funktion keinen Wert zurückgibt. Setze die Funktionsdeklaration ganz ans Ende deiner Verse-Datei. Der Körper der Funktion ist der gleiche Code wie in Lektion 5: Zeit zum Üben – mehr dazu kannst du also dort nachschlagen.VerseHurtPlayer() : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Damage(50.0)Da du keine Funktion innerhalb einer anderen Funktion definieren kannst, musst du sicherstellen, dass alle deine Funktionen auf der gleichen Ebene eingerückt sind wie
OnBegin().Jetzt hast du eine Funktion, die du jederzeit verwenden kannst, wenn du einem Charakter Schaden zufügen willst. Doch durch die Deklaration einer Funktion wird der Code nicht im Funktionskörper ausgeführt. Dazu musst du die Funktion aufrufen. Achte darauf, dass du diese Funktionen innerhalb von
OnBegin()aufrufst.VerseHurtPlayer() Print("Player Hurt")Mittlerweile ahnst du sicher, dass es auch eine Methode gibt, um einen Charakter zu heilen. Sie nennt sich
Heal(), und du kannst sie genauso aufrufen wieDamage(). Erstelle die FunktionHealPlayer()am Ende deiner Verse-Datei unter Verwendung dieses Codes.VerseHealPlayer() : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): FortniteCharacter.Heal(20.0)Füge nun den Funktionsaufruf
HealPlayer()zu den Funktionsaufrufen im Körper vonOnBegin()hinzu.VerseHurtPlayer() Print("Player Hurt") Sleep(5.0) HealPlayer() Print("Player Healed")
Vielleicht ist dir aufgefallen, dass es einen neuen Aufruf an die Funktion Sleep() gibt. Im Grunde sorgt Sleep() dafür, dass das Programm wartet, bevor es den danach folgenden Code weiter ausführt. Die Wartezeit wird durch den Parameter bestimmt, den du an Sleep() übergibst, dargestellt in Sekunden. (In einer späteren Lektion erfährst du mehr über Parameter.) Würde Sleep() nicht an dieser Stelle stehen, dann würde HealPlayer() unmittelbar nach HurtPlayer() ausgeführt, sodass du nicht den Effekt beider Funktionsaufrufe bemerken würdest.
Vollständiges Script
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):
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=