Agora que você distribuiu os jogadores em equipes, deverá conceder a eles as armas corretas com base na equipe em que estão. Siga as etapas abaixo para saber como conceder as armas apropriadas aos jogadores quando eles surgirem.
Concedendo armas com base na equipe
- Na definição da classe
triad_infiltration_game, adicione uma nova funçãoGrantTeamWeapon(). Essa função concede uma arma a um jogador com base na sua respectiva equipe. ~~~(verse) GrantTeamWeapon(InPlayer:player):void= ~~~ - Em
GrantTeamWeapon(), escolha a equipe do jogador especificado. Em seguida, em um loopfor, percorra todas as equipes na matrizTeams, obtendo o índice para essa equipe e armazenando-o em uma variávelTeamIndex. Verifique se a equipe do jogador especificado corresponde a essa equipe como uma condição de filtro no loopfor. ~~~(verse) GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam): ~~~ - Como a condição de filtro garantirá que o código dentro do loop for seja executado com a equipe correta, recupere o distribuidor de itens apropriado para essa equipe indexando em WeaponGranters usando o TeamIndex dela. Por fim, chame GrantItem() usando o jogador especificado. O código GrantTeamWeapon() deve ficar assim:
~~~(verse)
# Conceder uma arma aos jogadores com base no índice de suas equipes na matriz Teams,
# fazendo a indexação na matriz 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("O jogador na equipe {TeamIndex + 1} recebeu uma arma")
~~~
Confirme se a ordem das equipes em
Teamscorresponde à ordem dos distribuidores de itens emWeaponGranters. Se os infiltradores forem da Equipe 1, a primeira concessão emWeaponGrantersdeverá ser para os infiltradores. Verifique novamente no editor se esses valores estão corretos.
Concedendo armas quando os jogadores surgem
- Na definição da classe
triad_infiltration_game, adicione uma nova funçãoOnPlayerSpawn(). Essa função usa umagentpara chamarGrantTeamWeapon()e conceder a arma apropriada ao jogador. ~~~(verse) OnPlayerSpawn(SpawnedAgent:agent):void= ~~~ - Em
OnPlayerSpawn(), convertaSpawnedAgentpara umplayer. Em seguida, chameGrantTeamWeapon()passando o jogador. A funçãoOnPlayerSpawn()deve ficar assim: ~~~(verse) # Executado quando qualquer jogador surge de uma plataforma de surgimento # Chama GrantTeamWeapon usando o SpawnedAgent fornecido OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Tentando conceder uma arma ao jogador que surgiu") GrantTeamWeapon(SpawnedPlayer) ~~~ - Em
OnBegin(), antes da chamada paraBalanceTeams(), inscrevaSpawnedEventde cada plataforma de surgimento usando um loopforpara a funçãoOnPlayerSpawn()que acabou de definir. ~~~(verse) OnBegin() :void = # Obtenha todas as equipes. set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Salve as equipes para fazer referência a elas mais tarde set InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? Logger.Print("As três equipes foram encontradas") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Coloque as três equipes em TeamsAndTotals") then: #Inscreva em PlayerAddedEvent para permitir a redistribuição de equipes quando um novo jogador entrar no jogo for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() else: Logger.Print("Não foi possível encontrar todas as equipes, certifique-se de atribuir as equipes corretas nas configurações da ilha.") ~~~ -
Salve o script, compile-o e clique em Iniciar Sessão na barra de ferramentas do UEFN para testar o nível. Quando testá-lo, os jogadores deverão ficar na equipe com a maior diferença e surgirem com a arma apropriada para suas equipes. Confirme esse comportamento usando o log.
Próxima etapa
Na próxima etapa deste tutorial, você aprenderá a deixar os infiltradores invisíveis quando surgirem e quando o jogo começar.