Maintenant que vous avez équilibré le nombre de joueurs dans chaque équipe, vous voulez leur attribuer les armes correctes en fonction de l'équipe dans laquelle ils ont été placés. Suivez les étapes ci-dessous pour apprendre comment accorder aux joueurs les armes appropriées lorsqu'ils apparaissent.
Armer les joueurs de l'équipe
- Dans la définition de classe
triad_infiltration_game, ajoutez une nouvelle fonction nomméeGrantTeamWeapon(). Cette fonction accorde une arme à un joueur selon leur équipe respective.GrantTeamWeapon(InPlayer:player):void= - Sur
GrantTeamWeapon(), obtenez l'équipe du joueur donné. Ensuite, dans une bouclefor, itérez à travers chaque équipe dans la matriceTeams, obtenez l'indice de cette équipe et stockez-le dans une variable appeléeTeamIndex. Vérifiez si l'équipe du joueur donné correspond à cette équipe sous la condition de filtre dans votre bouclefor.GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam): - Étant donné que votre condition de filtre garantira que le code dans la boucle
fors'exécute avec l'équipe correcte, récupérez le fournisseur d'objets approprié pour cette équipe en l'indexant dansWeaponGrantersà l'aide duTeamIndexde cette équipe. Enfin, appelezGrantItem()en utilisant le joueur donné. Votre codeGrantTeamWeapon()devrait être similaire à celui-ci :# Attribue une arme aux joueurs en fonction de l'index de leur équipe dans la matrice des équipes # par indexation dans la matrice WeaponGranters. GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam): if(WeaponGranter := WeaponGranters[TeamIndex]): WeaponGranter.GrantItem(InPlayer) Logger.Print("Granted a Player on team {TeamIndex + 1} a weapon")Assurez-vous que l'ordre de vos équipes dans
Teamscorrespond à l'ordre de vos fournisseurs d'objets dansWeaponGranters. Si les infiltrés sont l'équipe 1, alors le premier fournisseur dansWeaponGrantersdevrait être pour les infiltrés. Vérifiez à nouveau dans l'éditeur que ces valeurs sont correctes.
Accorder des armes au point d'apparition des joueurs
- Dans la définition de classe
triad_infiltration_game, ajoutez une nouvelle fonction nomméeOnPlayerSpawn(). Cette fonction prend unagentet l'utilise pour appelerGrantTeamWeapon()afin d'accorder l'arme appropriée au joueur.OnPlayerSpawn(SpawnedAgent:agent):void= - Sur
OnPlayerSpawn(), paramétrezSpawnedAgentpourplayer. Puşs appellezGrantTeamWeapon()depuis le joueur. Votre fonctionOnPlayerSpawn()doit être similaire à ce qui suit :# S'exécute lorsqu'un joueur apparaît d'un point d'apparition. # Appelle GrantTeamWeapon à l'aide du SpawnedAgent fourni. OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Attempting to grant spawned player a weapon") GrantTeamWeapon(SpawnedPlayer) -
- Dans
OnBegin(), avant l'appel àBalanceTeams(), abonnez-vous à l'événementSpawnedEventde chaque point d'apparition de joueur en utilisant une boucleforpour la fonctionOnPlayerSpawn()que vous venez de définir.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 InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? 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") then: #S'abonner à l'événement PlayerAddedEvent pour permettre le rééquilibrage de l'équipe lorsqu'un nouveau joueur rejoint la partie for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() else: Logger.Print("Couldn't find all teams, make sure to assign the correct teams in your island settings.")
- Dans
-
Enregistrez le script, compilez-le, puis cliquez sur Lancer la session dans la barre d'outils de l'UEFN pour tester le niveau. Lorsque vous testez votre niveau, chaque joueur devrait se retrouver dans l'équipe présentant la plus grande différence et apparaître avec une arme appropriée pour son équipe. Vérifiez ce comportement à l'aide du journal.
Étape suivante
Dans l'étape suivante de ce tutoriel, vous apprendrez à rendre les infiltrés invisibles lors de leurs apparitions et au début de la partie.