Quando un giocatore si unisce a una partita in corso, non vuoi che debba aspettare come spettatore l'inizio di un nuovo round. Idealmente, un nuovo giocatore dovrebbe essere in grado di generarsi e iniziare a giocare immediatamente. Per gestire questa situazione, devi aggiungere il nuovo giocatore alla TeamMap
, sottoscrivere al loro evento di eliminazione e assegnargli la prima arma.
Per assegnare ai giocatori le armi e sottoscrivere ai loro eventi giocatore quando partecipano a una partita in corso, attieniti ai passaggi seguenti.
-
Aggiungi un nuovo metodo
OnPlayerAdded
alla classeteam_elimination_game
. Questo metodo promuove qualsiasi giocatore che si unisce alla partita in corso al livello di arma più basso di un altro giocatore del team.OnPlayerAdded(InPlayer : player) : void = Print("Si è unito un nuovo giocatore!")
-
Ottieni il team del nuovo giocatore utilizzando
GetTeam[]
e memorizzalo in una variabile localeTeam
. Recupera ilFortCharacter
per quel giocatore e salvalo in una variabileFortCharacter
.OnPlayerAdded(InPlayer : player) : void = Print("Si è unito un nuovo giocatore!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[]
-
Per assegnare il nuovo giocatore alla
TeamMap
devi accedere allaplayer_map
associata alTeam
del nuovo giocatore. Ottieni laplayer_map
associata al nuovo giocatore e memorizzala in una variabile localePlayerMap
.OnPlayerAdded(InPlayer : player) : void = Print("Si è unito un nuovo giocatore!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayerr.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team]
-
Imposta il punteggio del giocatore in
PlayerMap
a 0, quindi aggiornaTeamMap
con la variabile localePlayerMap
.OnPlayerAdded(InPlayer : player) : void = Print("Si è unito un nuovo giocatore!") if: Team := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] FortCharacter := InPlayer.GetFortCharacter[] var PlayerMap : player_map = TeamMap[Team] set PlayerMap[InPlayer] = 0 set TeamMap[Team] = PlayerMap
-
Assegna al giocatore la sua prima arma attraverso una chiamata a
GrantWeapon
, e sottoscrivi l'evento di eliminazione del nuovo giocatore. Il codiceOnPlayerAdded
deve essere simile al codice seguente.OnPlayerAdded(InPlayer : player) : void = Print("Si è unito un nuovo giocatore!") 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(“Impostazione di un nuovo livello di arma del giocatore su 0 nella TeamMap") FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # sottoscrivi all'evento di eliminazione di questo giocatore
-
In
OnBegin
, sottoscrivi allo spazio di giocoPlayerAddedEvent
utilizzandoOnPlayerAdded
. Adesso, un giocatore che si unisce alla partita in corso attiveràOnPlayerAdded
. PoichéPlayerAddedEvent
è un evento attivato dallo spazio di gioco stesso, non ti serve un dispositivo particolare per sottoscriverlo.OnBegin<override>()<suspends> : void = set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Il numero di eliminazioni necessario per concludere la partita è {EliminationsToEndGame}") Print("Avvio dell'assegnazione dei giocatori") PopulateTeamsAndPlayers() for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Sottoscrivi a ciascuna pedana di generazione giocatore for (Sentry : Sentries): Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # Sottoscrivi a ogni sentinella # Sottoscrivi ai nuovi giocatori che si uniscono alla partita GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
Salva lo script in Visual Studio Code, compilalo e fai clic su Avvia sessione nella barra degli strumenti UEFN per eseguire il playtest del livello. Quando un nuovo giocatore si unisce a una partita in corso, dovrebbe generarsi con la prima arma. Quando il giocatore o un compagno di team realizza un'eliminazione, entrambi dovrebbero essere promossi al livello di arma successivo.
Passaggio successivo
Nell'ultimo passaggio di questo tutorial, imparerai ad eseguire il test delle eliminazioni, quando giochi in modalità giocatore singolo utilizzando le sentinelle.