Lorsqu'un joueur rejoint une partie en cours, vous devez éviter qu'il attende en spectateur qu’une nouvelle manche commence. Dans l’idéal, un nouveau joueur doit commencer à jouer immédiatement après être apparu dans le jeu. Pour cela, vous devez ajouter le nouveau joueur à TeamMap, vous abonner à l’événement d'élimination correspondant et accorder au joueur sa première arme.
Procédez comme suit pour accorder aux joueurs des armes et vous abonner à leurs événements de joueurs lorsqu'ils rejoignent une partie en cours.
-
Ajoutez une méthode
OnPlayerAddedà la classeteam_elimination_game. Cette méthode promeut tout joueur qui rejoint la partie en cours au niveau d'armement le plus bas parmi les autres joueurs de l'équipe.OnPlayerAdded(InPlayer : player) : void = Print("A New Player Joined!") -
Obtenez l'équipe du nouveau joueur à l'aide de
GetTeam[]et stockez-la dans une variable localeTeam. Récupérez leFortCharacterde ce joueur et enregistrez-le dans une variableFortCharacter.OnPlayerAdded(InPlayer : player) : void = Print("A New Player Joined!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] -
Pour affecter le nouveau joueur au
TeamMap, vous devez accéder auplayer_mapassocié à laTeamdu nouveau joueur. Obtenez leplayer_mapassocié au nouveau joueur et stockez-le dans une variable localePlayerMap.OnPlayerAdded(InPlayer : player) : void = Print("A New Player Joined!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayerr.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] -
Réglez le score du joueur dans
PlayerMapsur 0, puis mettez à jourTeamMapavec votre variable localePlayerMap.OnPlayerAdded(InPlayer : player) : void = Print("A New Player Joined!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap -
Accordez au joueur sa première arme via un appel à
GrantWeaponet abonnez-vous à l'événement d'élimination du nouveau joueur. Votre codeOnPlayerAddeddoit ressembler à celui-ci.OnPlayerAdded(InPlayer : player) : void = Print("A New Player Joined!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap then: GrantWeapon(option{InPlayer}, 0) Print("Set new player weapon tier to 0 in the TeamMap") FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # subscribe to this player's elimination event -
Dans
OnBegin, abonnez-vous à l’événementPlayerAddedEventde l'espace de jeu en utilisantOnPlayerAdded. Désormais, tout joueur qui rejoint la partie en cours déclencheraOnPlayerAdded. Étant donné quePlayerAddedEventest un événement déclenché par l'espace de jeu proprement dit, vous n'avez pas besoin d'un appareil particulier pour vous y abonner.OnBegin<override>()<suspends> : void = set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Number of eliminations to end game is {EliminationsToEndGame}") Print("Beginning to assign players") PopulateTeamsAndPlayers() for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # S'abonner à chaque point d'apparition de joueur for (Sentry : Sentries): Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # S'abonner à chaque sentinelle # S'abonner aux nouveaux joueurs qui rejoignent la partie GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
Enregistrez le script dans Visual Studio Code, compilez-le, puis cliquez sur Lancer la session dans la barre d'outils de l’UEFN pour tester le niveau. Lorsqu’un nouveau joueur rejoint une partie en cours, il doit apparaître avec la première arme. Lorsque ce joueur ou l’un de ses coéquipiers réussit à éliminer une cible, il doit être promu au niveau d’armement suivant.
Étape suivante
Dans l’étape suivante de ce tutoriel, vous apprendrez à tester les éliminations en mode solo à l'aide de sentinelles.