Esta seção mostra como encontrar jogadores e equipes no tempo de execução que você configurou anteriormente.
Como definir membros de classes
- Abra o Explorador Verse e clique duas vezes em triad_infiltration_game.verse para abrir o script no Visual Studio Code.
- Na parte superior do arquivo, adicione using { /Verse.org/Random } para acessar a função Shuffle(). Você usará essa função para embaralhar aleatoriamente as equipes de jogadores antes de equilibrá-las. Adicione também using { /Fortnite.com/FortPlayerUtilities para acessar a função Respawn() dos jogadores, que você usará mais tarde para teletransportar os jogadores para suas áreas de surgimento no início do jogo. ~~~(verse) using { /Fortnite.com/Devices } using { /Fortnite.com/FortPlayerUtilities } using { /Verse.org/Simulation } using { /Verse.org/Random } using { /UnrealEngine.com/Temporary/Diagnostics } ~~~
- Na definição da classe
triad_infiltration_game, adicione os seguintes campos:-
Três inteiros editáveis, denominados MaximumInfiltrators, MaximumAttackers e MaximumDefenders. Inicialize MaximumInfiltrators para 2; MaximumAttackers e MaximumDefenders para 4. Eles rastreiam o número máximo de jogadores em cada equipe, e você os usará para distribuir as equipes dinamicamente. Você pode alterar esses números para fins de teste e para criar variações interessantes no jogo. ~~~(verse) triad_infiltration := class(creative_device):
# Para evitar que os jogadores não consigam entrar em uma equipe, você deve definir o número máximo # de jogadores nas configurações da ilha para a soma de todas as variáveis Maximum(Team).
# Número máximo de jogadores na equipe de infiltradores. @editable MaximumInfiltrators:int = 2
# Número máximo de jogadores na equipe de atacantes. @editable MaximumAttackers:int = 4
# Número máximo de jogadores na equipe de defensores. @editable MaximumDefenders:int = 4 ~~~
-
Uma variável
mapdenominadaTeamsAndTotals. Ela mapeará as equipes de jogadores ao número máximo de jogadores nessa equipe. ~~~(verse) # Número máximo de jogadores na equipe de infiltradores. @editable MaximumInfiltrators:int = 2# Número máximo de jogadores na equipe de atacantes. @editable MaximumAttackers:int = 4
# Número máximo de jogadores na equipe de defensores. @editable MaximumDefenders:int = 4
# O mapa das equipes para seu número máximo de jogadores. var TeamsAndTotals:[team]int = map{} ~~~
-
Uma matriz editável de teletransportadores chamada
Teleporters. Ela contém uma referência aos teletransportadores que você usará para teletransportar os jogadores para suas plataformas de surgimento após o equilíbrio da equipe. ~~~(verse) # O mapa das equipes para seu número máximo de jogadores. var TeamsAndTotals:[team]int = map{}# A matriz de teletransportadores que teletransportam os jogadores até a plataforma de surgimento de suas respectivas equipes assim que o jogo começa. @editable Teleporters:[]teleporter_device = array{} ~~~
-
Uma matriz
item_granter_deviceeditável chamadaWeaponGranters. Ela armazena os distribuidores de itens necessários para conceder aos jogadores uma arma com base na sua equipe quando eles surgirem. ~~~(verse) # A matriz de teletransportadores que teletransportam os jogadores até a plataforma de surgimento de suas respectivas equipes assim que o jogo começa. @editable Teleporters:[]teleporter_device = array{}# A matriz de distribuidores de armas para cada equipe. @editable var WeaponGranters:[]item_granter_device = array{} ~~~
-
Três variáveis opcionais team, denominadas MaybeInfiltrators, MaybeAttackers e MaybeDefenders. Elas armazenam uma referência a cada equipe, para permitir que você verifique se essas equipes estão configuradas corretamente. ~~~(verse) # A matriz de distribuidores de armas para cada equipe. @editable var WeaponGranters:[]item_granter_device = array{}
# A referência à equipe de infiltradores. var MaybeInfiltrators:?team = false
# A referência à equipe de atacantes. var MaybeAttackers:?team = false
# A referência à equipe de defensores. var MaybeDefenders:?team = false ~~~
-
Uma matriz de variáveis de equipes denominada
Teams. Ela contém uma referência a todas as equipes no jogo, que será usada para definir as variáveis de equipe opcionais acima, bem como encontrar equipes para atribuir jogadores ao equilibrar. ~~~(verse) # A referência à equipe de infiltradores. var MaybeInfiltrators:?team = false# A referência à equipe de atacantes. var MaybeAttackers:?team = false
# A referência à equipe de defensores. var MaybeDefenders:?team = false
# A matriz de todas as equipes do jogo. var Teams : []team = array{} ~~~
-
Como encontrar jogadores e equipes no tempo de execução
- Em
OnBegin(), atualize a matrizTeamscom cada equipe configurada anteriormente em Configurações da ilha. Você pode usar a funçãoGetTeams()da APIfort_team_collectionpara obter uma matriz de todas as equipes no espaço de jogo.OnBegin<override>()<suspends>:void = # Obter todas as equipes. set Teams = GetPlayspace().GetTeamCollection().GetTeams() - Salve uma referência a cada equipe atribuindo MaybeInfiltrators, MaybeAttackers e MaybeDefenders às suas respectivas equipes na matriz Teams. ~~~(verse) # Salve as equipes para fazer referência a elas mais tarde. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} ~~~
- Agora, você verifica se todas as três equipes foram configuradas corretamente. Como MaybeInfiltrators, MaybeAttackers e MaybeDefenders são, cada um, uma option, você pode fazer isso verificando se elas contêm um valor real. Se assim for, defina o valor de cada equipe em TeamsAndTotals como o número máximo de jogadores para essa equipe.
if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? 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") else: Logger.Print("Não foi possível encontrar todas as equipes, certifique-se de atribuir as equipes corretas nas configurações da ilha.") -
Agora, seu código de
triad_infiltration_gamedeve estar assim:~~~(verse) triad_infiltration_game := class(creative_device):
Logger:log = log{Channel := triad_infiltration_log_channel}
# Para evitar que os jogadores não consigam entrar em uma equipe, você deve definir o número máximo # de jogadores nas configurações da ilha para a soma de todas as variáveis Maximum(Team).
# Número máximo de jogadores na equipe de infiltradores. @editable MaximumInfiltrators:int = 2
# Número máximo de jogadores na equipe de atacantes. @editable MaximumAttackers:int = 4
# Número máximo de jogadores na equipe de defensores. @editable MaximumDefenders:int = 4
# A matriz de teletransportadores que teletransportam os jogadores até a plataforma de surgimento de suas respectivas equipes assim que o jogo começa. @editable Teleporters:[]teleporter_device = array{}
# A matriz de distribuidores de armas para cada equipe. @editable var WeaponGranters:[]item_granter_device = array{}
# A matriz de geradores de jogadores de cada equipe. @editable PlayersSpawners:[]player_spawner_device = array{}
# A referência à equipe de infiltradores. var MaybeInfiltrators:?team = false
# A referência à equipe de atacantes. var MaybeAttackers:?team = false
# A referência à equipe de defensores. var MaybeDefenders:?team = false
# A matriz de todas as equipes do jogo. var Teams : []team = array{}
# O mapa das equipes para seu número máximo de jogadores. var TeamsAndTotals:[team]int = map{}
OnBegin
() :void = # Obtenha todas as equipes. set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Salve as equipes para fazer referência a elas mais tarde set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? 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")
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 no Visual Studio Code e, no menu principal, em Verse, clique em Compilar código Verse para atualizar seu dispositivo criado com Verse no nível.
-
Clique em Iniciar sessão na barra de ferramentas do UEFN para testar o nível. Quando você testar seu nível, todas as três equipes deverão estar configuradas em
TeamsAndTotals. Verifique esse comportamento com o log.
Próxima etapa
Na próxima etapa deste tutorial, você aprenderá a distribuir equipes de jogadores assimetricamente no início de um jogo.