Ora che hai distribuito in modo bilanciato i giocatori nei team, puoi procedi assegnando loro le armi corrette in base al team a cui sono stati assegnati. Segui i passaggi seguenti per imparare come assegnare ai giocatori le armi giuste al momento della loro generazione.
Assegnare le armi in base al team
- Nella definizione della classe
triad_infiltration_game
, aggiungi una nuova funzione denominataGrantTeamWeapon()
. Questa funzione consente di assegnare un'arma a un giocatore in base al suo team di appartenenza.GrantTeamWeapon(InPlayer:player):void=
- In
GrantTeamWeapon()
, ottieni il team del giocatore indicato. Poi, in un loopfor
, scorri l'arrayTeams
, ottenendo l'indice di quel team e memorizzandolo in una variabileTeamIndex
. Controlla se il team del giocatore indicato corrisponde a questo team come condizione di filtro nel ciclofor
.GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam):
- Poiché la tua condizione di filtro assicurerà che il codice all'interno del loop
for
venga eseguito con il team corretto, recupera l'assegnatore oggetti appropriato per quel team indicizzandolo inWeaponGranters
utilizzandoTeamIndex
di quel team. Infine, chiamaGrantItem()
utilizzando il giocatore indicato. Il codiceGrantTeamWeapon()
dovrebbe essere simile al seguente:# Assegna un'arma ai giocatori in base all'indice del loro team nell'array Team # indicizzando l'array 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("Arma assegnata a un giocatore del team {TeamIndex + 1}")
Assicurati che l'ordine dei tuoi team nell'array
Teams
corrisponda all'ordine dei tuoi assegnatori oggetti inWeaponGranters
. Se gli Infiltrati appartengono al Team 1, di conseguenza il primo assegnatore inWeaponGranters
sarà previsto per gli Infiltrati. Controlla nell'editor che i valori siano corretti.
Assegnare le armi durante la generazione dei giocatori
- Nella definizione della classe
triad_infiltration_game
, aggiungi una nuova funzioneOnPlayerSpawn()
. Questa funzione prende unagent
e lo utilizza per chiamareGrantTeamWeapon()
al fine di assegnare l'arma appropriata al giocatore.OnPlayerSpawn(SpawnedAgent:agent):void=
- In
OnPlayerSpawn()
, lanciaSpawnedAgent
in unplayer
. Quindi chiamaGrantTeamWeapon()
passando il giocatore. La tua funzioneOnPlayerSpawn()
dovrebbe essere simile alla seguente:# Viene eseguito quando avviene la generazione di qualsiasi giocatore su una piattaforma di generazione. # Chiama GrantTeamWeapon utilizzando lo SpawnedAgent fornito. OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Tentativo di assegnare un'arma al giocatore generato") GrantTeamWeapon(SpawnedPlayer)
- In
OnBegin()
, prima di chiamareBalanceTeams()
, sottoscrivi l'eventoSpawnedEvent
di ogni giocatore, utilizzando un loopfor
alla funzioneOnPlayerSpawn()
appena definita.OnBegin<override>()<suspends>:void = # Ottieni tutti i team set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Salva i team per farvi riferimento in seguito set InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? Logger.Print("Sono stati trovati tutti e tre i team") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Configura tutti e tre i team in TeamsAndTotals") then: #Sottoscrive l'evento PlayerAddedEvent per consentire il ribilanciamento del team quando un nuovo giocatore si unisce al gioco for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() else: Logger.Print("Impossibile trovare tutti i team: assicurati di assegnare i team corretti nelle impostazioni della tua isola.")
-
Salva lo script, compilalo e fai clic su Avvia sessione nella barra degli strumenti UEFN per eseguire il playtest del livello. Durante il playtest del livello, ogni giocatore deve essere assegnato al team con la differenza maggiore ed essere generato con un'arma appropriata per il suo team. Verifica questo comportamento utilizzando il registro.
Passaggio successivo
Nel passaggio successivo di questo tutorial, imparerai come rendere gli Infiltrati invisibili quando vengono generati all'inizio di una partita.