Quando um jogador entra em um jogo em andamento, você não quer que ele tenha que esperar como espectador pelo início de uma nova rodada. Em condições ideais, um novo jogador deve conseguir surgir e começar a jogar imediatamente. Para lidar com isso, você precisa adicionar o novo jogador a TeamMap, inscrever-se no evento de eliminação e conceder a ele sua primeira arma.
Siga estas etapas para conceder armas aos jogadores e inscrever-se nos eventos deles quando entrarem em um jogo em andamento.
-
Adicione um novo método
OnPlayerAddedà classeteam_elimination_game. Esse método promove qualquer jogador que entra no jogo em andamento para o nível de arma mais baixo de outro jogador da equipe.~~~(verse) OnPlayerAdded(InPlayer : player) : void = Print("Um novo jogador entrou!") ~~~
-
Obtenha a equipe para o novo jogador usando
GetTeam[]e armazene-a em uma variável localTeam. Recupere oFortCharacterdo jogador e salve-o em uma variávelFortCharacter.OnPlayerAdded(InPlayer : player) : void = Print("Um novo jogador entrou!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] -
Para atribuir um novo jogador ao
TeamMap, é preciso acessar oplayer_mapassociado àTeamdo novo jogador. Obtenha oplayer_mapassociado ao novo jogador e armazene numa variável localPlayerMap.~~~(verse) OnPlayerAdded(InPlayer : player) : void = Print("Um novo jogador entrou!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayerr.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] ~~~
-
Defina a pontuação do jogador em
PlayerMapcomo 0, depois atualizeTeamMapcom sua variável localPlayerMap.~~~(verse) OnPlayerAdded(InPlayer : player) : void = Print("Um novo jogador entrou!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap ~~~
-
Conceda ao jogador sua primeira arma por meio de uma chamada para
GrantWeapone assine o evento de eliminação do novo jogador. Seu códigoOnPlayerAddeddeve se parecer com o código abaixo.~~~(verse) OnPlayerAdded(InPlayer : player) : void = Print("Um novo jogador entrou!") 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("Definir o nível de arma do novo jogador como 0 no TeamMap") FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # Inscrever-se no evento de eliminação deste jogador ~~~
-
Em
OnBegin, inscreva-se noPlayerAddedEventdo espaço de jogo usandoOnPlayerAdded. Agora, um jogador que entrar no jogo em andamento acionaráOnPlayerAdded. ComoPlayerAddedEventé um evento acionado pelo próprio espaço de jogo, você não precisa de um dispositivo específico para se inscrever nele.~~~(verse) OnBegin
() : void = set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("O número de eliminações para terminar o jogo é {EliminationsToEndGame}") Print("Começando a atribuir jogadores") PopulateTeamsAndPlayers()
for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Inscrever a cada plataforma de surgimento de jogador for (Sentry : Sentries): Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # Inscrever a cada Sentinela # Como inscrever a novos jogadores que entram no jogo GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded) ~~~
Salve o script no Visual Studio Code, compile-o e clique em Iniciar sessão na barra de ferramentas do UEFN para testar o nível. Quando um novo jogador entra em um jogo em andamento, ele deve surgir com a primeira arma. Quando ele ou um companheiro de equipe marcarem uma eliminação, deverão ser promovidos para o próximo nível de arma.
Próxima etapa
Na próxima etapa deste tutorial, você aprenderá a testar eliminações ao jogar no modo de jogador único usando sentinelas.