Esta sección muestra cómo encontrar en tiempo de ejecución los jugadores y equipos que configuraste anteriormente.
Cómo definir miembros de clases
- 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(). Lo utilizarás para mezclar aleatoriamente equipos de jugadores antes de equilibrar. Añade tambiénusing { /Fortnite.com/FortPlayerUtilities }para acceder a la funciónRespawn()de los jugadores, que utilizarás más tarde para teletransportar a los jugadores a sus zonas de aparición al inicio de la partida.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 denominados
MaximumInfiltrators,MaximumAttackersyMaximumDefenders. InicializaMaximumInfiltratorsa 2 yMaximumAttackersyMaximumDefendersa 4. Estos registran el número máximo de jugadores de cada equipo; los utilizará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 para 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 - Un
mapde variables llamadoTeamsAndTotals. Esto asignará equipos de jugadores al número máximo de jugadores de 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 equipos con su número máximo de jugadores. var TeamsAndTotals:[team]int = map{} - Una matriz editable de teletransportadores llamada
Teleporters. Contiene una referencia a los teletransportadores que utilizarás para teletransportar a los jugadores a sus lugares de aparición después de equilibrar el equipo.# Mapa de equipos con su número máximo de jugadores. var TeamsAndTotals:[team]int = map{} # Matriz de teletransportadores que teletransportan a los jugadores al punto de aparición de su equipo cuando se inicia la partida. @editable Teleporters:[]teleporter_device = array{} - Una matriz
item_granter_deviceeditable llamadaWeaponGranters. Almacena los repartidores de objetos necesarios para conceder a los jugadores un arma en función de su equipo cuando aparecen.# Matriz de teletransportadores que teletransportan a los jugadores al punto de aparición de su equipo cuando se inicia la partida. @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 que puedas 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. Contiene una referencia a todos los equipos del juego, y la utilizarás para establecer las variables opcionales de equipo anteriores, 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 en el juego. var Teams:[]team = array{}
- Tres enteros editables denominados
Cómo encontrar jugadores y equipos en tiempo de ejecución
- En
OnBegin(), actualiza la matrizTeamscon cada equipo que hayas configurado antes en Configuración de la experiencia. Puedes utilizar la funciónGetTeams()de la APIfort_team_collectionpara obtener una matriz de todos los equipos del espacio de juego.OnBegin<override>()<suspends>:void = # Obtiene todos los equipos. set Teams = GetPlayspace().GetTeamCollection().GetTeams() - Guarda una referencia a cada equipo al asignar
MaybeInfiltrators,MaybeAttackersyMaybeDefendersa sus respectivos equipos en la matrizTeams.# Guarda los equipos para hacer referencia a ellos más tarde. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} - Ahora comprueba si los tres equipos se han configurado correctamente. Como
MaybeInfiltrators,MaybeAttackersyMaybeDefendersson cada unaoption, puedes hacer esto comprobando si contienen un valor real. Si es así, establece el valor de cada equipo enTeamsAndTotalsen el número máximo de jugadores para ese equipo.if: Infiltrators := MaybeInfiltrators? Attackers := MaybeAttackers? Defenders := MaybeDefenders? Logger.Print("Encontrados los tres equipos") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Configura los tres equipos en TeamsAndTotals") else: Logger.Print("No se han encontrado todos los equipos, asegúrate de asignar los equipos correctos en la configuración de tu isla.") -
Tu código de
triad_infiltration_gamedebería tener el siguiente aspecto: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 para 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 a los jugadores al punto de aparición de su equipo cuando se inicia la partida. @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 en el juego. var Teams:[]team = array{} # Mapa de equipos con su número máximo de jugadores. var TeamsAndTotals:[team]int = map{} OnBegin<override>()<suspends>:void = # Obtiene todos los equipos set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Guarda los equipos para hacer referencia a ellos más 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("Encontrados los tres equipos") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Configura los tres equipos en TeamsAndTotals") else: Logger.Print("No se han encontrado todos los equipos, asegúrate de asignar los equipos correctos en la configuración de tu isla.") -
Guarda la secuencia de comandos en Visual Studio Code y, en el menú principal, debajo de Verse, haz clic en Compilar secuencias de comandos de Verse para actualizar tu dispositivo creado con Verse en el nivel.
-
Haz clic en Abrir sesión en la barra de herramientas de UEFN para poner a prueba el nivel. Cuando pruebes tu nivel, los tres equipos deben estar configurados en
TeamsAndTotals. Comprueba este comportamiento con el registro.
Siguiente paso
En el siguiente paso de este tutorial, aprenderás a equilibrar equipos de jugadores de forma asimétrica al comienzo de una partida.