Esta sección muestra cómo encontrar jugadores en el tiempo de ejecución que estableciste anteriormente.
Cómo definir los miembros de la clase
- Abre el explorador de Verse y haz doble clic en triad_infiltration_game.verse para abrir la secuencia de comandos en Visual Studio Code.
- En la parte superior del archivo, añade
using { /Verse.org/Random }para acceder a la funciónShuffle(). Te servirá para mezclar aleatoriamente los equipos de jugadores antes de equilibrar. Agrega tambiénusing { /Fortnite.com/FortPlayerUtilities }a fin de acceder a la funciónRespawn()para los jugadores, que más adelante utilizarás para teletransportar jugadores a sus zonas de aparición al inicio del juego.using { /Fortnite.com/Devices } using { /Fortnite.com/FortPlayerUtilities } using { /Verse.org/Simulation } using { /Verse.org/Random } using { /UnrealEngine.com/Temporary/Diagnostics } - En la definición de la clase
triad_infiltration_game, añade los siguientes campos:- Tres enteros editables llamados
MaximumInfiltrators,MaximumAttackersyMaximumDefenders. InicializaMaximumInfiltratorsen 2, yMaximumAttackersyMaximumDefendersen 4. Estos registran el número máximo de jugadores en cada equipo; los usarás para equilibrar los equipos dinámicamente. Puedes cambiar estos números para hacer pruebas y crear variaciones interesantes en el juego.triad_infiltration := class(creative_device): # Para evitar que los jugadores no puedan unirse a un equipo, debes establecer el número máximo # de jugadores en la configuración de la isla en la suma de todas las variables Maximum(Team). # Número máximo de jugadores en el equipo de infiltrados. @editable MaximumInfiltrators:int = 2 # Número máximo de jugadores en el equipo de atacantes. @editable MaximumAttackers:int = 4 # Número máximo de jugadores en el equipo de defensores. @editable MaximumDefenders:int = 4 - Una variable
mapque se llamaTeamsAndTotals. Esto asignará equipos de jugadores al número máximo de jugadores en ese equipo.# Número máximo de jugadores en el equipo de infiltrados. @editable MaximumInfiltrators:int = 2 # Número máximo de jugadores en el equipo de atacantes. @editable MaximumAttackers:int = 4 # Número máximo de jugadores en el equipo de defensores. @editable MaximumDefenders:int = 4 # Mapa de los equipos con su número máximo de jugadores. var TeamsAndTotals:[team]int = map{} - Una matriz editable de teletransportadores denominada
Teleporters. Esto contiene una referencia a los teletransportadores que usarás para teletransportar jugadores a sus apariciones después del equilibrio de equipos.# Mapa de los equipos con su número máximo de jugadores. var TeamsAndTotals:[team]int = map{} # Matriz de teletransportadores que teletransportan jugadores a la zona de aparición de su equipo una vez que se inicia el juego. @editable Teleporters:[]teleporter_device = array{} - Una matriz
item_granter_deviceeditable llamadaWeaponGranters. Esto almacena los otorgadores de objetos necesarios para otorgar a los jugadores un arma en función de su equipo cuando aparecen.# Matriz de teletransportadores que teletransportan jugadores a la zona de aparición de su equipo una vez que se inicia el juego. @editable Teleporters:[]teleporter_device = array{} # Matriz de repartidores de armas para cada equipo. @editable var WeaponGranters:[]item_granter_device = array{} - Tres variables
teamopcionales denominadasMaybeInfiltrators,MaybeAttackersyMaybeDefenders. Almacenan una referencia a cada equipo para permitirte comprobar que los equipos estén configurados correctamente.# Matriz de repartidores de armas para cada equipo. @editable var WeaponGranters:[]item_granter_device = array{} # Referencia al equipo de infiltrados. var MaybeInfiltrators:?team = false # Referencia al equipo de atacantes. var MaybeAttackers:?team = false # Referencia al equipo de defensores. var MaybeDefenders:?team = false - Una matriz variable de equipos llamada
Teams. Esto contiene una referencia a todos los equipos en el juego, y lo usarás para establecer las variables opcionales de equipo de arriba, así como para encontrar equipos a los que asignar jugadores al equilibrar.# Referencia al equipo de infiltrados. var MaybeInfiltrators:?team = false # Referencia al equipo de atacantes. var MaybeAttackers:?team = false # Referencia al equipo de defensores. var MaybeDefenders:?team = false # Matriz de todos los equipos del juego. var Teams:[]team = array{}
- Tres enteros editables llamados
Cómo encontrar jugadores y equipos en el tiempo de ejecución
- En
OnBegin(), actualiza la matrizTeamscon cada equipo que definiste anteriormente en los Ajustes de la experiencia. Puedes usar la funciónGetTeams()de la APIfort_team_collectionpara obtener una matriz de todos los equipos en el espacio de juego.OnBegin<override>()<suspends>:void = # Obtiene todos los equipos. set Teams = GetPlayspace().GetTeamCollection().GetTeams() - Guarda una referencia de cada equipo. Para ello, asigna
MaybeInfiltrators,MaybeAttackersyMaybeDefendersa sus equipos respectivos en la matrizTeams.# Guarda los equipos para consultarlos luego. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} - Ahora comprueba si los tres equipos se configuraron de forma correcta. Debido a que
MaybeInfiltrators,MaybeAttackersyMaybeDefendersconstituyen unaoptionen cada caso, puedes verificar si contienen un valor real. Si es así, establece el valor de cada equipo enTeamsAndTotalsal número máximo de jugadores para ese equipo.if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Se encontró a los tres equipos.") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Se utilizó la variable set en los tres equipos en TeamsAndTotals.") else: Logger.Print("No se pudo encontrar a todos los equipos. Asegúrate de asignar los equipos correctos en los ajustes de la isla.") -
Tu código
triad_infiltration_gamedebería verse de la siguiente manera:triad_infiltration_game := class(creative_device): Logger:log = log{Channel := triad_infiltration_log_channel} # Para evitar que los jugadores no puedan unirse a un equipo, debes establecer el número máximo # de jugadores en la configuración de la isla en la suma de todas las variables Maximum(Team). # Número máximo de jugadores en el equipo de infiltrados. @editable MaximumInfiltrators:int = 2 # Número máximo de jugadores en el equipo de atacantes. @editable MaximumAttackers:int = 4 # Número máximo de jugadores en el equipo de defensores. @editable MaximumDefenders:int = 4 # Matriz de teletransportadores que teletransportan jugadores a la zona de aparición de su equipo una vez que se inicia el juego. @editable Teleporters:[]teleporter_device = array{} # Matriz de repartidores de armas para cada equipo. @editable var WeaponGranters:[]item_granter_device = array{} # Matriz de generadores de jugadores para cada equipo. @editable PlayersSpawners:[]player_spawner_device = array{} # Referencia al equipo de infiltrados. var MaybeInfiltrators:?team = false # Referencia al equipo de atacantes. var MaybeAttackers:?team = false # Referencia al equipo de defensores. var MaybeDefenders:?team = false # Matriz de todos los equipos del juego. var Teams:[]team = array{} # Mapa de los equipos con su número máximo de jugadores. var TeamsAndTotals:[team]int = map{} OnBegin<override>()<suspends>:void = # Obtén todos los equipos set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Guarda los equipos para consultarlos luego set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Se encontró a los tres equipos.") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Se utilizó la variable set en los tres equipos en TeamsAndTotals.") else: Logger.Print("No se pudo encontrar a todos los equipos. Asegúrate de asignar los equipos correctos en los ajustes de la isla.") -
Guarda la secuencia de comandos en Visual Studio Code y, en el menú principal, haz clic en Verse; luego, haz clic en Compilar la secuencia de comandos de Verse para actualizar el dispositivo creado con Verse en el nivel.
-
Haz clic en Comenzar sesión en la barra de herramientas de UEFN para realizar una prueba de juego del nivel. Cuando realices la prueba de juego del nivel, los tres equipos deben estar configurados en
TeamsAndTotals. Comprueba este comportamiento en el registro.
Próximo paso
En el próximo paso de este tutorial, aprenderás a equilibrar los equipos de jugadores de forma asimétrica al comenzar la partida.