Ahora que ya dividiste a los jugadores en equipos, debes otorgarles las armas correctas en función del equipo en el que estén. Sigue los pasos detallados a continuación para saber cómo otorgarles a los jugadores las armas adecuadas cuando aparecen.
Cómo otorgar las armas según el equipo
- En la definición de la clase
triad_infiltration_game, añade una nueva función llamadaGrantTeamWeapon(). Esta función otorga un arma a un jugador en función de su equipo.GrantTeamWeapon(InPlayer:player):void= - En
GrantTeamWeapon(), obtén el equipo para un jugador determinado. A continuación, en un buclefor, itera a través de cada equipo en la matrizTeams, obtén el índice de ese equipo y almacénalo en una variableTeamIndex. Comprueba si el equipo del jugador 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): - Ya que tu condición de filtro garantizará que el código dentro del bucle
forse ejecute con el equipo correcto, recupera el otorgador de objetos apropiado para ese equipo indexando enWeaponGrantersa través delTeamIndexde ese equipo. Por último, llama aGrantItem()con el jugador determinado. Tu códigoGrantTeamWeapon()debería verse de la siguiente manera:# Otorga a los jugadores un arma basada en el índice de su equipo en la matriz Equipos # al indexar el array de 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("Granted a Player on team {TeamIndex + 1} a weapon")Asegúrate de que el orden de tus equipos en
Teamscoincida con el orden de tu otorgador de objetos enWeaponGranters. Si los Infiltrados son el Equipo 1, entonces el primer otorgador enWeaponGrantersdebería ser para los Infiltrados. Comprueba en el editor que estos valores sean correctos.
Cómo otorgar armas al momento de la aparición de los jugadores
- En la definición de la clase
triad_infiltration_game, añade una nueva función llamadaOnPlayerSpawn(). Esta función toma unagenty lo utiliza para llamar aGrantTeamWeapon()para otorgar el arma apropiada al jugador.OnPlayerSpawn(SpawnedAgent:agent):void= - En
OnPlayerSpawn(), convierte elSpawnedAgenten unplayer. Luego llama aGrantTeamWeapon()que pasa al jugador. Tu funciónOnPlayerSpawn()debe verse de la siguiente manera:# Se ejecuta cuando se genera un jugador en una plataforma de aparición. # Llama a GrantTeamWeapon a través del SpawnedAgent que se brindó. OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Se está intentando otorgar un arma al jugador generado.") GrantTeamWeapon(SpawnedPlayer) - En
OnBegin(), antes de la llamada aBalanceTeams(), suscribe cadaSpawnedEventde las plataformas de aparición a través de un buclefora la funciónOnPlayerSpawn()que acabas de definir.OnBegin<override>()<suspends>:void = # Obtén todos los equipos set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Guarda los equipos para consultarlos luego set InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? 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.") then: #Suscribe a PlayerAddedEvent para permitir el equilibrio de equipos cuando un nuevo jugador se une al juego. for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() 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, compílala y haz clic en Comenzar sesión en la barra de herramientas de UEFN para probar el nivel. Cuando realices la prueba de juego del nivel, cada jugador debería estar en el equipo con mayor diferencia y debería aparecer con un arma apropiada para su equipo. Comprueba este comportamiento en el registro.
Próximo paso
En el próximo paso de este tutorial, aprenderás a hacer invisibles a los Infiltrados cuando aparecen y cuando empieza el juego.