Dans cette section, nous vous expliquons comment rechercher à l'exécution des joueurs et des équipes que vous avez configurés précédemment.
Définir les membres de classe
1. Ouvrez l'explorateur Verse et double-cliquez sur triad_infiltration_game.verse pour ouvrir le script dans Visual Studio Code.
- En haut du fichier, ajoutez
using { /Verse.org/Random }pour accéder à la fonctionShuffle(). Cette fonction permet de mélanger aléatoirement les équipes de joueurs avant de les équilibrer. Ajoutez égalementusing { /Fortnite.com/FortPlayerUtilities }pour accéder à la fonctionRespawn()pour les joueurs, que vous utiliserez plus tard pour téléporter les joueurs vers leurs zones d'apparition au début du jeu.using { /Fortnite.com/Devices } using { /Fortnite.com/FortPlayerUtilities } using { /Verse.org/Simulation } } using { /Verse.org/Random } using { /UnrealEngine.com/Temporary/Diagnostics } - Dans la définition de classe
triad_infiltration_game, ajoutez les champs suivants :- Trois entiers modifiables nommés
MaximumInfiltrators,MaximumAttackersetMaximumDefenders. InitialisezMaximumInfiltratorsà 2 etMaximumAttackersetMaximumDefendersà 4. Ces paramètres définissent le nombre maximum de joueurs dans chaque équipe et vous serviront à équilibrer les équipes de manière dynamique. Vous pouvez modifier ces chiffres à des fins de test et pour créer des variations intéressantes dans le jeu.triad_infiltration := class(creative_device): # Pour éviter que les joueurs ne puissent pas rejoindre une équipe, définissez la somme de toutes les variables Maximum(Team) # comme le nombre maximal de joueurs dans les paramètres de l'île. # Nombre maximum de joueurs dans l'équipe des infiltrés. @editable MaximumInfiltrators:int = 2 # Nombre maximum de joueurs dans l'équipe des attaquants. @editable MaximumAttackers:int = 4 # Nombre maximum de joueurs dans l'équipe des défenseurs. @editable MaximumDefenders:int = 4 - Une
mapvariable nomméeTeamsAndTotals. Elle associera les équipes de joueurs au nombre maximal de joueurs dans cette équipe.# Nombre maximum de joueurs dans l'équipe des infiltrés. @editable MaximumInfiltrators:int = 2 # Nombre maximum de joueurs dans l'équipe des attaquants. @editable MaximumAttackers:int = 4 # Nombre maximum de joueurs dans l'équipe des défenseurs. @editable MaximumDefenders:int = 4 # Mappage des équipes à leur nombre maximum de joueurs. var TeamsAndTotals:[team]int = map{} - Une matrice modifiable de téléporteurs nommée
Teleporters. Celle-ci contient une référence aux téléporteurs que vous utiliserez pour téléporter les joueurs vers leur zone d'apparition après l'équilibrage de l'équipe.# Mappage des équipes à leur nombre maximum de joueurs. var TeamsAndTotals:[team]int = map{} # Matrice des téléporteurs qui transportent les joueurs à la zone d'apparition de leur équipe une fois la partie commencée. @editable Teleporters:[]teleporter_device = array{} - Une matrice
item_granter_devicemodifiable nomméeWeaponGranters. Elle stocke les fournisseurs d'objets nécessaires pour attribuer une arme aux joueurs en fonction de leur équipe lorsqu'ils apparaissent.# Matrice des téléporteurs qui transportent les joueurs à la zone d'apparition de leur équipe une fois la partie commencée. @editable Teleporters:[]teleporter_device = array{} # Matrice de fournisseurs d'armes pour chaque équipe. @editable var WeaponGranters:[]item_granter_device = array{} - Trois variables
teamfacultatives nomméesMaybeInfiltrators,MaybeAttackersetMaybeDefenders. Ces variables stockent une référence à chaque équipe pour vous permettre de vérifier que les équipes sont configurées correctement.# Matrice de fournisseurs d'armes pour chaque équipe. @editable var WeaponGranters:[]item_granter_device = array{} # Référence à l'équipe des infiltrés. var MaybeInfiltrators:?team = false # Référence à l'équipe des attaquants. var MaybeAttackers:?team = false # Référence à l'équipe des défenseurs. var MaybeDefenders:?team = false - Une matrice variable des équipes nommée
Teams. Elle contient une référence à toutes les équipes du jeu, et vous l'utiliserez afin de définir les variables d'équipe facultatives ci-dessus, ainsi que pour trouver des équipes auxquelles affecter les joueurs lors de l'équilibrage.# Référence à l'équipe des infiltrés. var MaybeInfiltrators:?team = false # Référence à l'équipe des attaquants. var MaybeAttackers:?team = false # Référence à l'équipe des défenseurs. var MaybeDefenders:?team = false # Matrice de l'ensemble des équipes du jeu. var Teams:[]team = array{}
- Trois entiers modifiables nommés
Rechercher des joueurs et des équipes à l'exécution
- Dans
OnBegin(), mettez à jour la matriceTeamsavec chaque équipe précédemment configurée dans Paramètres d'expérience. Vous pouvez utiliser la fonctionGetTeams()de l'APIfort_team_collectionpour obtenir une matrice de toutes les équipes de l'espace de jeu.OnBegin<override>()<suspends>:void = # Obtenir toutes les équipes. set Teams = GetPlayspace().GetTeamCollection().GetTeams() - Enregistrez une référence à chaque équipe en assignant
MaybeInfiltrators,MaybeAttackersetMaybeDefendersà leurs équipes respectives dans la matriceTeams.# Enregistrez les équipes pour y faire référence ultérieurement. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} - Vérifiez maintenant si les trois équipes ont été configurées correctement. Étant donné que
MaybeInfiltrators,MaybeAttackersetMaybeDefenderssont chacun uneoption, vous pouvez le faire en vérifiant s'ils contiennent une valeur réelle. Si c'est le cas, définissez la valeur de chaque équipe dansTeamsAndTotalsau nombre maximum de joueurs pour cette équipe.if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Found all three teams") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Set all three teams in TeamsAndTotals") else: Logger.Print("Couldn't find all teams, make sure to assign the correct teams in your island settings.") -
Votre code
triad_infiltration_gamedoit à présent ressembler à ceci :triad_infiltration_game := class(creative_device): Logger:log = log{Channel := triad_infiltration_log_channel} # Pour éviter que les joueurs ne puissent pas rejoindre une équipe, définissez la somme de toutes les variables Maximum(Team) # comme le nombre maximal de joueurs dans les paramètres de l'île. # Nombre maximum de joueurs dans l'équipe des infiltrés. @editable MaximumInfiltrators:int = 2 # Nombre maximum de joueurs dans l'équipe des attaquants. @editable MaximumAttackers:int = 4 # Nombre maximum de joueurs dans l'équipe des défenseurs. @editable MaximumDefenders:int = 4 # Matrice des téléporteurs qui transportent les joueurs à la zone d'apparition de leur équipe une fois la partie commencée. @editable Teleporters:[]teleporter_device = array{} # Matrice de fournisseurs d'armes pour chaque équipe. @editable var WeaponGranters:[]item_granter_device = array{} # Matrice des points d'apparition de joueur de chaque équipe. @editable PlayersSpawners:[]player_spawner_device = array{} # Référence à l'équipe des infiltrés. var MaybeInfiltrators:?team = false # Référence à l'équipe des attaquants. var MaybeAttackers:?team = false # Référence à l'équipe des défenseurs. var MaybeDefenders:?team = false # Matrice de l'ensemble des équipes du jeu. var Teams:[]team = array{} # Mappage des équipes à leur nombre maximum de joueurs. var TeamsAndTotals:[team]int = map{} OnBegin<override>()<suspends>:void = # Obtenir toutes les équipes set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Enregistrez les équipes pour y faire référence ultérieurement. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Found all three teams") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Set all three teams in TeamsAndTotals") else: Logger.Print("Couldn't find all teams, make sure to assign the correct teams in your island settings.") -
Enregistrez le script dans Visual Studio Code puis, dans le menu principal, sous Verse, cliquez sur Build Verse Scripts (Générer les scripts Verse) pour mettre à jour votre appareil créé avec Verse dans le niveau.
-
Cliquez sur Lancer la session dans la barre d'outils de l'UEFN pour tester le niveau. Lorsque vous testez votre niveau, les trois équipes doivent être configurées dans
TeamsAndTotals. Vérifiez ce comportement à l'aide du journal.
Étape suivante
Lors de la prochaine étape de ce tutoriel, vous allez apprendre à équilibrer les équipes de joueurs de façon asymétrique au début du jeu.