Deine Funktion HurtPlayer() funktioniert, aber da du der Methode Damage() einen literalen Wert übergibst, kann sich dieser Wert nur ändern, wenn du den Code manuell änderst. In dieser Übung wirst du deine Funktion HurtPlayer() mit dem Rückgabewert einer anderen Funktion, die du erstellen wirst, flexibler machen.
In Lektion 4: Zeit zum Üben! hast du Bedingungen verwendet, um zu berechnen, wie viel Schaden oder Heilung je nach Gesundheit des Spielers von einem Zaubertrank ausgehen sollen. In einer Funktion namens CalculateDamage() greifst du nun auf Teile dieses Codes zurück. Sie gibt einen Wert des Typs float zurück. Du speicherst diesen Wert in einer Konstante, die du dann an die Methode Damage() weitergibst.
-
Erstelle eine Funktion mit dem Namen
CalculateDamage(). Innerhalb der Funktion werden zwei Konstanten vom TypFloatdeklariert:MinHealthundPotionDamageAmount. Deklariere eine Variable vom TypFloatmit dem NamenPlayerHealth.CalculateDamage() : float = MinHealth : float = 1.0 PotionDamageAmount: float = 80.0 var PlayerHealth : float = 100.0 - Erstelle einen
if...else if...elseAusdruck, der einen von drei Werten zurückgibt:PotionDamageAmount, wennPlayerHealthgrößer alsPotionDamageAmountistPlayerHealth-MinHealth, wennPlayerHealthkleiner alsPotionDamageAmountaber größer alsMinHealthistPlayerHealth, wennPlayerHealthkleiner als oder gleichMinHealthist
# Diesen Schaden zufügen, wenn das Ausmaß des Schadens den Spieler eliminieren würde if (PlayerHealth > PotionDamageAmount): return PotionDamageAmount else if (PlayerHealth > MinHealth): # Wenn die Gesundheit des Spielers niedrig ist, soll er eine weitere Chance erhalten. return PlayerHealth - MinHealth else: # Spieler eliminieren return PlayerHealthDer Effekt dieses Codes ist, dass er dem Spieler eine zweite Chance gibt, wenn er einen Trank trinkt, der ihn normalerweise eliminieren würde.
-
Nachdem du nun eine Funktion erstellt hast, die ein nützliches Ergebnis liefert, musst du dieses Ergebnis speichern. Deklariere eine Konstante
FloatnamensDamageToDound initialisiere sie mit dem Rückgabewert vonCalculateDamage(). Füge dies zu deiner FunktionHurtPlayer()hinzu.HurtPlayer() : void = Playspace : fort_playspace = GetPlayspace() AllPlayers : []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): DamageToDo: float = CalculateDamage() FortniteCharacter.Damage(50.0) -
Endlich ist es Zeit, das Ergebnis zu nutzen! Übergib
DamageToDoals Argument anDamage(). Füge einPrint()hinzu, damit du genau sehen kannst, wasCalculateDamage()zurückgibt.HurtPlayer() : void = Playspace : fort_playspace = GetPlayspace() AllPlayers : []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): DamageToDo: float = CalculateDamage() Print("DamageToDo: {DamageToDo}") FortniteCharacter.Damage(DamageToDo)
Anstelle des Aufrufs der Methode Damage() mit einem Literalwert wird nun der von CalculateDamage() zurückgegebene Wert verwendet. Du solltest den Aufruf von HurtPlayer() aus einer früheren Übung bereits geschrieben haben, aber vergiss nicht, das zu überprüfen.
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):
# Wird ausgeführt, wenn das Gerät in einem laufenden Spiel gestartet wird
OnBegin<override>()<suspends>:void=
HurtPlayer()
Print("Spieler verletzt")
CalculateDamage() : float =
MaxHealth : float = 100.0
MinHealth : float = 1.0
PotionDamageAmount: float = 80.0
var PlayerHealth : float = 100.0
# Diesen Schaden zufügen, wenn das Ausmaß des Schadens den Spieler eliminieren würde
if (PlayerHealth > PotionDamageAmount):
return PotionDamageAmount
else if (PlayerHealth > MinHealth):
# Wenn die Gesundheit des Spielers niedrig ist, soll er eine weitere Chance erhalten.
return PlayerHealth - MinHealth
else:
# Spieler eliminieren
return PlayerHealth
HurtPlayer() : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
DamageToDo: float = CalculateDamage()
Print("DamageToDo: {DamageToDo}")
FortniteCharacter.Damage(DamageToDo)
Versuche auf eigene Faust, eine Funktion ähnlich wie CalculateDamage() zu erstellen, die ein Ergebnis liefert, das für HealPlayer() nützlich ist. Wenn du nicht weiterkommst, findest du in der Lektion 4 - Zeit zum Üben! einige Ideen.