Bien que votre fonction HurtPlayer() fonctionne, comme vous transmettez une valeur littérale à la méthode Damage(), cette valeur ne peut changer que si vous modifiez manuellement le code. Dans cet exercice, vous allez rendre votre fonction HurtPlayer() plus flexible avec la valeur de retour d'une autre fonction que vous allez créer.
Dans la leçon 4 : À vous de joueur !, vous avez utilisé des conditionnelles pour calculer le niveau de blessure ou de guérison des potions en fonction des PV du joueur. Vous allez à présent insérer une partie de ce code dans une fonction appelée CalculateDamage(), qui renverra une valeur de type float. Vous stockerez cette valeur dans une constante que vous transmettrez ensuite à la méthode Damage().
-
Créez une fonction nommée
CalculateDamage(). Au sein de la fonction, déclarez deux constantes de typefloat:MinHealthetPotionDamageAmount. Déclarez une variable de typefloatappeléePlayerHealth.CalculateDamage() : float = MinHealth : float = 1.0 PotionDamageAmount: float = 80.0 var PlayerHealth : float = 100.0 - Créez une expression
if...else if...elsequi renvoie l'une des trois valeurs :PotionDamageAmount, siPlayerHealthest supérieur àPotionDamageAmountPlayerHealth-MinHealth, siPlayerHealthest inférieur àPotionDamageAmount, mais supérieur àMinHealthPlayerHealth, siPlayerHealthest inférieur ou égal àMinHealth
# Si le niveau de dégâts infligé n'élimine pas le joueur, définir ce niveau if (PlayerHealth > PotionDamageAmount): return PotionDamageAmount else if (PlayerHealth > MinHealth): # Donner au joueur une chance supplémentaire si ses PV sont faibles return PlayerHealth - MinHealth else: # Éliminer le joueur return PlayerHealthCe code a pour effet de donner une seconde chance au joueur s'il boit une potion qui l'éliminerait normalement.
-
Maintenant que vous avez créé une fonction qui renvoie un résultat utile, vous devez stocker ce résultat. Déclarez une constante
floatappeléeDamageToDoet initialisez-la avec la valeur de retour deCalculateDamage(). Ajoutez ceci à votre fonctionHurtPlayer().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) -
Enfin, utilisez le résultat. Transmettez
DamageToDoen tant qu'argument àDamage(). Ajoutez unPrint()afin de savoir exactement ce que renvoieCalculateDamage().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)
Maintenant, plutôt que d’utiliser une valeur littérale lors de votre appel à la méthode Damage(), vous utilisez la valeur renvoyée par CalculateDamage(). Vous devriez avoir déjà écrit l'appel à HurtPlayer() dans un exercice précédent, mais n'oubliez pas de vérifier.
Script complet
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):
# S'exécute à l'activation de l'appareil dans une partie en cours.
OnBegin<override>()<suspends>:void=
HurtPlayer()
Print("Player Hurt")
CalculateDamage() : float =
MaxHealth : float = 100.0
MinHealth : float = 1.0
PotionDamageAmount: float = 80.0
var PlayerHealth : float = 100.0
# Si le niveau de dégâts infligé n'élimine pas le joueur, définir ce niveau
if (PlayerHealth > PotionDamageAmount):
return PotionDamageAmount
else if (PlayerHealth > MinHealth):
# Donner au joueur une chance supplémentaire si ses PV sont faibles
return PlayerHealth - MinHealth
else:
# Éliminer le joueur
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)
Essayez par vous-même de créer une fonction similaire à CalculateDamage() qui renvoie un résultat utile à HealPlayer(). Si vous ne parvenez pas à avancer, consultez la leçon 4 À vous de joueur pour avoir quelques idées.