Cuando un jugador se une a una partida en curso, no deseas que espere como observador hasta que comience una nueva ronda. Lo ideal sería que el nuevo jugador pueda aparecer y comenzar a jugar inmediatamente. Para controlar esto, debes añadir al nuevo jugador a TeamMap, suscribir al evento de eliminación y otorgarle su primera arma.
Realiza estos pasos para otorgar armas a los jugadores y suscribir a sus eventos de jugadores cuando se unen a un juego en curso.
-
Añade un nuevo método
OnPlayerAddeda la claseteam_elimination_game. Este método promueve a cualquier jugador que se una a una partida en curso al nivel de arma más bajo de otro jugador en el equipo.OnPlayerAdded(InPlayer : player) : void = Print("¡Un nuevo jugador se unió!") -
Obtén el equipo para el nuevo jugador con
GetTeam[]y guárdalo en una variable localTeam. RecuperaFortCharacterpara ese jugador y guárdalo en una variableFortCharacter.OnPlayerAdded(InPlayer : player) : void = Print("¡Un nuevo jugador se unió!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] -
Para asignar el nuevo jugador al
TeamMap, necesitas acceder alplayer_mapasociado con la variableTeamdel nuevo jugador. Obtén elplayer_mapasociado con el nuevo jugador y guárdalo en una variablePlayerMaplocal.OnPlayerAdded(InPlayer : player) : void = Print("¡Un nuevo jugador se unió!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayerr.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] -
Establece la puntuación del jugador en
PlayerMapen 0; luego, actualizaTeamMapcon tu variable localPlayerMap.OnPlayerAdded(InPlayer : player) : void = Print("¡Un nuevo jugador se unió!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap -
Otorga al jugador su primera arma mediante una llamada a
GrantWeapony suscríbete al evento de eliminación del nuevo jugador. El código deOnPlayerAddeddebería ser como el siguiente:OnPlayerAdded(InPlayer : player) : void = Print("¡Un nuevo jugador se unió!") 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 del arma del nuevo jugador en 0 en el TeamMap") FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # suscribe al evento de eliminación de este jugador -
En
OnBegin, suscribe alPlayerAddedEventdel PlaySpace conOnPlayerAdded. Ahora, el jugador que se une a la partida en curso activaráOnPlayerAdded. ComoPlayerAddedEventes un evento activado por el espacio de juego mismo no necesitas un dispositivo determinado para suscribir a él.OnBegin<override>()<suspends> : void = set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Cantidad de eliminaciones necesarias para terminar la partida: {EliminationsToEndGame}") Print("Comenzando a asignar jugadores") PopulateTeamsAndPlayers() for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Suscribe a cada una de las plataformas de aparición de jugador for (Sentry : Sentries): Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # Suscribe a cada centinela # Suscribe a los nuevos jugadores que se unen al juego. GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
Guarda la secuencia de comandos en Visual Studio Code, compílala y haz clic en Iniciar sesión en la barra de herramientas de UEFN para probar el nivel. Cuando un nuevo jugador se une a la partida en curso debería aparecer con la primera arma. Cuando él o un compañero de equipo logra una eliminación, debería promoverse al siguiente nivel de arma.
Próximo paso
En el siguiente paso de este tutorial, aprenderás cómo probar eliminaciones con centinelas cuando hay un solo jugador.