Ahora que has equilibrado a los jugadores en equipos, querrás concederles las armas correctas en función del equipo en el que hayan sido equilibrados. Sigue los pasos que se indican a continuación para aprender a conceder a los jugadores las armas adecuadas cuando aparezcan.
Cómo conceder armas en función del equipo
- En la definición de la clase
triad_infiltration_game, añade una nueva función llamadaGrantTeamWeapon(). Esta función concede un arma a un jugador en función de su equipo respectivo.GrantTeamWeapon(InPlayer:player):void= - En
GrantTeamWeapon(), obtén el equipo para el jugador dado. A continuación, en un buclefor, recorre cada equipo de la matrizTeams, obteniendo el índice de ese equipo y almacenándolo en una variableTeamIndex. Comprueba si el equipo del jugador dado coincide con este equipo como condición de filtro en tu buclefor.GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam): - Como tu condición de filtro garantizará que el código del bucle
forse ejecute con el equipo correcto, recupera el repartidor de objetos adecuado para ese equipo indexando enWeaponGrantersmediante elTeamIndexde ese equipo. Por último, llama aGrantItem()utilizando el jugador indicado. Tu código deGrantTeamWeapon()debería tener el siguiente aspecto:# Concede a los jugadores un arma en función del índice de su equipo en la matriz Teams # indexando en la 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("Se ha concedido un arma a un jugador del equipo {TeamIndex + 1}")Asegúrate de que el orden de tus equipos en
Teamscoincide con el orden de tus repartidores de objetos enWeaponGranters. Si los infiltrados son el Equipo 1, entonces el primer otorgante enWeaponGrantersdebe ser para los infiltrados. Comprueba en el editor que estos valores son correctos.
Cómo conceder armas con la aparición de jugadores
- En la definición de la clase
triad_infiltration_game, añade una nueva funciónOnPlayerSpawn(). Esta función toma unagenty lo utiliza para llamar aGrantTeamWeapon()para conceder el arma adecuada al jugador.OnPlayerSpawn(SpawnedAgent:agent):void= - En
OnPlayerSpawn(), convierte elSpawnedAgenten unplayer. Luego llama aGrantTeamWeapon()pasando al jugador. Tu funciónOnPlayerSpawn()debería tener el siguiente aspecto:# Se ejecuta cuando un jugador aparece en una plataforma de aparición. # Llama a GrantTeamWeapon utilizando el SpawnedAgent proporcionado. OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Intentando conceder un arma al jugador generado") GrantTeamWeapon(SpawnedPlayer) - En
OnBegin(), antes de la llamada aBalanceTeams(), suscribe cadaSpawnedEventdel generador de jugadores mediante un buclefora la funciónOnPlayerSpawn()que acabas de definir.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 InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? 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") then: #Se suscribe a PlayerAddedEvent para permitir el reequilibrio del equipo cuando un nuevo jugador se une a la partida for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() 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, compílala y haz clic en Abrir sesión en la barra de herramientas de UEFN para poner a prueba el nivel. Cuando pruebes tu nivel, cada jugador debe acabar en el equipo con mayor diferencia, y debe aparecer con un arma apropiada para su equipo. Comprueba este comportamiento utilizando el registro.
Siguiente paso
En el siguiente paso de este tutorial, aprenderás a hacer invisibles a los infiltrados cuando aparecen y cuando comienza el juego.