Dans l'exercice précédent, vous avez créé une fonction CalculateDamage() de départ, mais le corps de la fonction contient des constantes et des variables qui fonctionneraient mieux en tant que paramètres. Pour rappel, voici à quoi ressemble maintenant la fonction :
CalculateDamage() : float =
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
Votre version mise à jour de la fonction dispose de trois paramètres :
PlayerHealth: Les PV actuels du joueurDesiredDamageAmount: La quantité maximale de dégâts pouvant être infligés au joueurMinHealth: Les PV du joueur si le paramètreDesiredDamageAmountdoit réduire ses PV de0,0ou d'une valeur inférieure.
Mettez à jour la fonction pour qu'elle corresponde à ce qui suit :
CalculateDamage(PlayerHealth : float, DesiredDamageAmount : float, MinHealth : float) : float =
# Si le niveau de dégâts infligé n'élimine pas le joueur, définir ce niveau
if (PlayerHealth > DesiredDamageAmount):
return DesiredDamageAmount
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
Parfait ! Votre fonction calcule désormais les dégâts que votre joueur doit subir lorsque vous lui attribuez trois paramètres, plutôt que d'utiliser des variables et des constantes déclarées dans la fonction.
À ce stade, il se peut que vous voyiez un gribouillis rouge sous le () dans votre appel à CalculateDamage() dans HurtPlayer(). Cela est dû au fait que vous avez mis à jour la déclaration de CalculateDamage() pour qu'elle nécessite trois paramètres, mais vous ne passez aucun argument dans votre appel à CalculateDamage(). Vous corrigerez cela au cours des prochaines étapes.
-
Avant de pouvoir passer un argument de
PlayerHealthàCalculateDamage(), vous devez connaître les PV du personnage. Pour cela, vous utiliserez la méthodeGetHealth(). Vous l'appellerez de la même manière queDamage()etHeal(), mais elle renverra une valeur que vous devrez enregistrer dans votre fonctionHurtPlayer().HurtPlayer() : void = Playspace : fort_playspace = GetPlayspace() AllPlayers : []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): MyCharacterHealth : float = FortniteCharacter.GetHealth() DamageToDo: float = CalculateDamage() Print("DamageToDo: {DamageToDo}") FortniteCharacter.Damage(DamageToDo) -
Pour le second paramètre de
CalculateDamage(), vous aurez besoin d'un paramètre deHurtPlayer(). Vous allez créer ce paramètre maintenant. Ajoutez un paramètrefloatappeléDamageAmount.HurtPlayer()devrait maintenant ressembler à ceci :HurtPlayer(DamageAmount : float) : void = Playspace: fort_playspace = GetPlayspace() AllPlayers: []player = Playspace.GetPlayers() if (FirstPlayer : player = AllPlayers[0]): if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]): MyCharacterHealth : float = FortniteCharacter.GetHealth() DamageToDo : float = CalculateDamage() Print("DamageToDo: {DamageToDo}") FortniteCharacter.Damage(DamageToDo) -
Les trois arguments sont maintenant prêts à être ajoutés à
CalculateDamage().MyCharacterHealthpour le paramètrePlayerHealthDamageAmountpour le paramètreDesiredDamageAmount1.0pour le paramètreMinHealth
HurtPlayer() doit ressembler à ce qui suit, et aucune erreur ne doit se produire :
HurtPlayer(DamageAmount : float) : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
MyCharacterHealth : float = FortniteCharacter.GetHealth()
DamageToDo : float = CalculateDamage(MyCharacterHealth, DamageAmount, 1.0)
Print("Damage To Do: {DamageToDo}")
FortniteCharacter.Damage(DamageToDo)
Appelez la fonction HurtPlayer() plusieurs fois pour voir ses différents effets sur la santé du joueur.
Qu'en est-il de la fonction HealPlayer() ? Êtes-vous capable de la mettre à jour maintenant que vous savez comment utiliser les paramètres ?
Seule une méthode peut s’avérer utile. Il s’agit de la méthode SetMaxHealth(), que vous pouvez appeler de la même manière que Damage(), Heal() et GetHealth(). Essayez d’utiliser SetMaxHealth() et tout ce que vous savez sur les paramètres et les fonctions, pour mettre à jour la fonction HealPlayer(). Mettez-vous à la place du joueur et demandez-vous ce qui pourrait être intéressant ou amusant pour lui.
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(80.0)
Print("Player Hurt")
CalculateDamage(PlayerHealth : float, DesiredDamageAmount : float, MinHealth : float) : float =
# Si le niveau de dégâts infligé n'élimine pas le joueur, définir ce niveau
if (PlayerHealth > DesiredDamageAmount):
return DesiredDamageAmount
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(DamageAmount : float) : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
MyCharacterHealth : float = FortniteCharacter.GetHealth()
DamageToDo : float = CalculateDamage(MyCharacterHealth, DamageAmount, 1.0)
FortniteCharacter.Damage(DamageToDo)
Print("{DamageToDo} damage dealt to player")
HealPlayer(HealAmount : float) : void =
Playspace: fort_playspace = GetPlayspace()
AllPlayers: []player = Playspace.GetPlayers()
if (FirstPlayer : player = AllPlayers[0]):
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
FortniteCharacter.Heal(HealAmount)