Nachdem du die Spieler in Teams eingeteilt hast, musst du ihnen die richtigen Waffen geben, je nachdem, in welchem Team sie eingeteilt wurden. Folge diesen Schritten, um zu lernen, wie du Spielern die richtigen Waffen gibst, wenn sie spawnen.
Gewährung von Waffen basierend auf dem Team
- Füge in der Klassendefinition von
triad_infiltration_gameeine neue Funktion namensGrantTeamWeapon()hinzu. Diese Funktion gewährt einem Spieler eine Waffe, die seinem jeweiligen Team entspricht.GrantTeamWeapon(InPlayer:player):void= - In
GrantTeamWeapon()wird das Team für den angegebenen Spieler ermittelt. Dann wird in einerfor-Schleife jedes Team imTeams-Array durchlaufen, der Index für dieses Team ermittelt und in einer VariablenTeamIndexgespeichert. Überprüfe, ob die Mannschaft des angegebenen Spielers mit dieser Mannschaft als Filterbedingung in deinerfor-Schleife übereinstimmt.GrantTeamWeapon(InPlayer:player):void= if(CurrentTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]): for(TeamIndex -> PlayerTeam:Teams, PlayerTeam = CurrentTeam): - Da deine Filterbedingung sicherstellt, dass der Code innerhalb der
for-Schleife mit dem richtigen Team ausgeführt wird, rufe den entsprechenden Gegenstandsgeber für dieses Team ab, indem du inWeaponGrantersmit demTeamIndexdieses Teams indizierst. Rufe schließlichGrantItem()mit dem angegebenen Spieler auf. DeinGrantTeamWeapon()-Code sollte wie folgt aussehen:# Gewährt den Spielern eine Waffe basierend auf dem Index ihres Teams im Array Teams # durch Indizierung in das 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("Spieler in Team {TeamIndex + 1} hat eine Waffe erhalten")Vergewissere dich, dass die Reihenfolge deiner Teams in
Teamsmit der Reihenfolge deiner Gegenstandsgeber inWeaponGrantersübereinstimmt. Wenn die Infiltratoren Team 1 sind, dann sollte der erste Gegenstandsgeber inWeaponGrantersfür die Infiltratoren sein. Überprüfe im Editor, ob diese Werte korrekt sind.
Gewährung von Waffen beim Spawn von Spielern
- Füge in der Klassendefinition von
triad_infiltration_gameeine neue Funktion namensOnPlayerSpawn()hinzu. Diese Funktion nimmt einenagentund benutzt ihn, umGrantTeamWeapon()aufzurufen, um dem Spieler die entsprechende Waffe zu geben.OnPlayerSpawn(SpawnedAgent:agent):void= - Verwandle in
OnPlayerSpawn()denSpawnedAgentin einenPlayer. Dann rufeGrantTeamWeapon()auf und übergebe den Spieler. DeineOnPlayerSpawn()-Funktion sollte wie folgt aussehen:# Läuft, wenn ein Spieler von einer Spawnfläche spawnt. # Ruft GrantTeamWeapon unter Verwendung des angegebenen SpawnedAgent auf. OnPlayerSpawn(SpawnedAgent:agent):void= if(SpawnedPlayer := player[SpawnedAgent]): Logger.Print("Versuch, einem gespawnten Spieler eine Waffe zu geben") GrantTeamWeapon(SpawnedPlayer) - In
OnBegin(), vor dem Aufruf vonBalanceTeams(), abonniere dasSpawnedEventjedes Spieler-Spawners mit Hilfe einerfor-Schleife auf dieOnPlayerSpawn()-Funktion, die du gerade definiert hast.OnBegin<override>()<suspends>:void = # Ruft alle Teams ab set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Speichert die Teams, um sie später zu referenzieren set InfiltratorsOpt = option{Teams[0]} set AttackersOpt = option{Teams[1]} set DefendersOpt = option{Teams[2]} if: Infiltrators := InfiltratorsOpt? Attackers := AttackersOpt? Defenders := DefendersOpt? Logger.Print("Alle drei Teams wurden gefunden") set TeamsAndTotals[Infiltrators] = MaximumInfiltrators set TeamsAndTotals[Attackers] = MaximumAttackers set TeamsAndTotals[Defenders] = MaximumDefenders Logger.Print("Setze alle drei Teams in TeamsAndTotals") then: #Abonniert das PlayerAddedEvent, um eine Neuverteilung des Teams zu ermöglichen, wenn ein neuer Spieler dem Spiel beitritt for(PlayerSpawner:PlayersSpawners): PlayerSpawner.SpawnedEvent.Subscribe(OnPlayerSpawn) BalanceTeams() TeleportPlayersToStartLocations() else: Logger.Print("Es konnten nicht alle Teams gefunden werden, stelle sicher, dass du die richtigen Teams in deinen Inseleinstellungen zugewiesen hast.") -
Speichere das Script, erstelle es und klicke auf Sitzung starten in der UEFN-Symbolleiste, um das Level zu testen. Wenn du dein Level testest, sollte jeder Spieler in dem Team mit der größten Differenz landen und mit einer passenden Waffe für sein Team spawnen. Überprüfe dieses Verhalten anhand des Logs.
Nächster Schritt
Im nächsten Schritt dieses Tutorials lernst du, wie man die Infiltratoren unsichtbar macht, wenn sie spawnen und wenn das Spiel beginnt.