Cuando un jugador se une a una partida en curso, no quieres que tenga que esperar como espectador a que empiece una nueva ronda. Lo ideal sería que un nuevo jugador pudiera aparecer y empezar a jugar inmediatamente. Para ello, tienes que añadir al nuevo jugador al TeamMap, suscribirte a su evento de eliminación y concederle su primera arma.
Sigue estos pasos para conceder armas a los jugadores y suscribirte a sus eventos de jugador cuando se unan a una partida en curso.
-
Añade un nuevo método
OnPlayerAddeda la claseteam_elimination_game. Este método asciende a cualquier jugador que se una a la partida en curso al nivel de armas más bajo de otro jugador del equipo.OnPlayerAdded(InPlayer : player) : void = Print("¡Se ha unido un nuevo jugador!") -
Obtén el equipo del nuevo jugador utilizando
GetTeam[]y guárdalo en una variable localequipo. Recupera elFortCharacterde ese jugador y guárdalo en una variableFortCharacter.OnPlayerAdded(InPlayer : player) : void = Print("¡Se ha unido un nuevo jugador!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] -
Para asignar el nuevo jugador al
TeamMaptienes que acceder alplayer_mapasociado alTeamdel nuevo jugador. Obtén elplayer_mapasociado al nuevo jugador y guárdalo en una variable localPlayerMap.OnPlayerAdded(InPlayer : player) : void = Print("¡Se ha unido un nuevo jugador!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayerr.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] -
Pon (definir) la puntuación del jugador en
PlayerMapa 0, y luego actualizaTeamMapcon tu variable localPlayerMap.OnPlayerAdded(InPlayer : player) : void = Print("¡Se ha unido un nuevo jugador!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap -
Concede al jugador su primera arma a través de una llamada a
GrantWeapon, y suscribe al nuevo jugador el evento de eliminación. Tu códigoOnPlayerAddeddebe parecerse al código siguiente.OnPlayerAdded(InPlayer : player) : void = Print("¡Se ha unido un nuevo jugador!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap then: GrantWeapon(option{InPlayer}, 0) Print("Establecer el nivel de armas del nuevo jugador en 0 en el TeamMap") FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # Suscribirse al evento de eliminación de este jugador -
En
OnBegin, suscríbete alPlayerAddedEventdel espacio de juego utilizandoOnPlayerAdded. Ahora un jugador que se una a la partida en curso activaráOnPlayerAdded. ComoPlayerAddedEventes un evento activado por el propio espacio de juego, no necesitas un dispositivo concreto para suscribirte a él.OnBegin<override>()<suspends> : void = set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("El número de eliminaciones para terminar la partida es {EliminationsToEndGame}") Print("Empezando a asignar jugadores") PopulateTeamsAndPlayers() para (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Suscribirse a cada plataforma de aparición de jugador para (Sentry : Sentries): Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # Subscribirse a cada centinela # Suscribirse a los nuevos jugadores que se unan a la partida GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
Guarda la secuencia de comandos en Visual Studio Code, compílala y haz clic en Abrir sesión en la barra de herramientas de UEFN para poner a prueba el nivel. Cuando un nuevo jugador se une a una partida en curso, debe aparecer con la primera arma. Cuando ellos o un compañero consigan una eliminación, deberán ascender al siguiente nivel de armas.
Siguiente paso
En el siguiente paso de este tutorial, aprenderás a probar las eliminaciones cuando juegues en solitario usando centinelas.