In diesem Abschnitt erfährst du, wie du während der Laufzeit die Spieler und Mannschaften finden kannst, die du zuvor eingerichtet hast.
Definieren von Klassenmitgliedern
- Öffne den Verse-Explorer und klicke doppelt auf triad_infiltration_game.verse, um das Script in Visual Studio Code zu öffnen.
- Ganz oben in der Datei, füge
using { /Verse.org/Random }hinzu, um auf die FunktionShuffle()zuzugreifen. Damit werden die Spielerteams vor dem Ausbalancieren zufällig gemischt. Füge auchusing { /Fortnite.com/FortPlayerUtilities }hinzu, um auf dieRespawn()-Funktion für Spieler zuzugreifen, die du später verwenden wirst, um Spieler zu Beginn des Spiels in ihre Spawn-Bereiche zu teleportieren.using { /Fortnite.com/Devices } using { /Fortnite.com/FortPlayerUtilities } using { /Verse.org/Simulation } using { /Verse.org/Random } using { /UnrealEngine.com/Temporary/Diagnostics } - Füge in der Klassendefinition von
triad_infiltration_gamedie folgenden Felder hinzu:- Drei bearbeitbare Ganzzahlen mit den Namen
MaximumInfiltrators,MaximumAttackersundMaximumDefenders. InitialisiereMaximumInfiltratorsmit 2 undMaximumAttackersundMaximumDefendersmit 4. Damit wird die maximale Anzahl von Spielern in jedem Team erfasst, um die Teams dynamisch auszugleichen. Du kannst diese Zahlen zu Testzwecken ändern, um interessante Variationen im Spiel zu schaffen.triad_infiltration := class(creative_device): # Um zu vermeiden, dass Spieler einem Team nicht beitreten können, solltest du die maximale Anzahl # von Spielern in den Inseleinstellungen auf die Summe aller Maximum(Team)-Variablen setzen. # Maximale Anzahl von Spielern im Infiltrator-Team. @editable MaximumInfiltrators:int = 2 # Maximale Anzahl von Spielern im Angreifer-Team. @editable MaximumAttackers:int = 4 # Maximale Anzahl von Spielern im Verteidiger-Team. @editable MaximumDefenders:int = 4 - Eine Variablen-
Mapmit dem NamenTeamsAndTotals. Damit werden die Teams der maximalen Anzahl von Spielern in diesem Team zugeordnet.# Maximale Anzahl von Spielern im Infiltrator-Team. @editable MaximumInfiltrators:int = 2 # Maximale Anzahl von Spielern im Angreifer-Team. @editable MaximumAttackers:int = 4 # Maximale Anzahl von Spielern im Verteidiger-Team. @editable MaximumDefenders:int = 4 # Map der Teams mit ihrer maximalen Spielerzahl. var TeamsAndTotals:[team]int = map{} - Ein bearbeitbares Array von Teleportern namens
Teleporters. Dies enthält eine Referenz zu den Teleportern, mit denen du die Spieler nach dem Team-Balancing zu ihren Spawns teleportieren wirst.# Map der Teams mit ihrer maximalen Spielerzahl. var TeamsAndTotals:[team]int = map{} # Eine Reihe von Teleportern, die Spieler zum Spawnpunkt ihres Teams teleportieren, sobald das Spiel beginnt. @editable Teleporters:[]teleporter_device = array{} - Ein editierbares
item_granter_device-Array namensWeaponGranters. Hier werden die Gegenstandsgeber gespeichert, die benötigt werden, um den Spielern beim Spawnen eine Waffe für ihr Team zu geben.# Eine Reihe von Teleportern, die Spieler zum Spawnpunkt ihres Teams teleportieren, sobald das Spiel beginnt. @editable Teleporters:[]teleporter_device = array{} # Array von Waffengebern für jedes Team. @editable var WeaponGranters:[]item_granter_device = array{} - Drei optionale
Team-Variablen mit den NamenMaybeInfiltrators,MaybeAttackersundMaybeDefenders. In diesen wird ein Verweis auf jedes Team gespeichert, damit du überprüfen kannst, ob die Teams korrekt eingerichtet sind.# Array von Waffengebern für jedes Team. @editable var WeaponGranters:[]item_granter_device = array{} # Referenz auf das Infiltrator-Team. var MaybeInfiltrators:?team = false # Referenz auf das Angreifer-Team. var MaybeAttackers:?team = false # Referenz auf das Verteidiger-Team. var MaybeDefenders:?team = false - Ein Variablen-Array der Teams mit dem Namen
Teams. Dies enthält eine Referenz auf alle Teams im Spiel, und du wirst diese verwenden, um die optionalen Teamvariablen oben zu setzen und Teams zu finden, denen du Spieler beim Balancing zuweisen kannst.# Referenz auf das Infiltrator-Team. var MaybeInfiltrators:?team = false # Referenz auf das Angreifer-Team. var MaybeAttackers:?team = false # Referenz auf das Verteidiger-Team. var MaybeDefenders:?team = false # Array aller Teams im Spiel var Teams:[]team = array{}
- Drei bearbeitbare Ganzzahlen mit den Namen
Suche nach Spielern und Teams zur Laufzeit
- Aktualisiere in
OnBegin()das ArrayTeamsmit jedem Team, das du zuvor in Erlebniseinstellungen eingerichtet hast. Du kannst die FunktionGetTeams()aus der APIfort_team_collectionverwenden, um ein Array aller Teams im Spielbereich zu erhalten.OnBegin<override>()<suspends>:void = # Ruft alle Teams ab. set Teams = GetPlayspace().GetTeamCollection().GetTeams() - Speichere eine Referenz auf jedes Team, indem du
MaybeInfiltrators,MaybeAttackersundMaybeDefendersihren jeweiligen Teams im ArrayTeamszuweist.# Speichert die Teams, um sie später zu referenzieren. set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} - Nun kontrollierst du, ob alle drei Teams richtig aufgestellt sind. Da
MaybeInfiltrators,MaybeAttackersundMaybeDefendersjeweils eineOptionsind, kannst du dies tun, indem du prüfst, ob sie einen echten Wert enthalten. Wenn ja, setze den Wert für jedes Teams inTeamsAndTotalsauf die maximale Anzahl der Spieler für dieses Team.if: Infiltrators := MaybeInfiltrators? Angreifer:= MaybeAttackers? Defenders := MaybeDefenders? 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") else: Logger.Print("Es konnten nicht alle Teams gefunden werden, stelle sicher, dass du die richtigen Teams in deinen Inseleinstellungen zugewiesen hast.") -
Dein
triad_infiltration_game-Code sollte nun wie folgt aussehen:triad_infiltration_game := class(creative_device): Logger:log = log{Channel := triad_infiltration_log_channel} # Um zu vermeiden, dass Spieler einem Team nicht beitreten können, solltest du die maximale Anzahl # von Spielern in den Inseleinstellungen auf die Summe aller Maximum(Team)-Variablen setzen. # Maximale Anzahl von Spielern im Infiltrator-Team. @editable MaximumInfiltrators:int = 2 # Maximale Anzahl von Spielern im Angreifer-Team. @editable MaximumAttackers:int = 4 # Maximale Anzahl von Spielern im Verteidiger-Team. @editable MaximumDefenders:int = 4 # Eine Reihe von Teleportern, die Spieler zum Spawnpunkt ihres Teams teleportieren, sobald das Spiel beginnt. @editable Teleporters:[]teleporter_device = array{} # Array von Waffengebern für jedes Team. @editable var WeaponGranters:[]item_granter_device = array{} # Array von Spieler-Spawner für jedes Team. @editable PlayersSpawners:[]player_spawner_device = array{} # Referenz auf das Infiltrator-Team. var MaybeInfiltrators:?team = false # Referenz auf das Angreifer-Team. var MaybeAttackers:?team = false # Referenz auf das Verteidiger-Team. var MaybeDefenders:?team = false # Array aller Teams im Spiel var Teams:[]team = array{} # Map der Teams mit ihrer maximalen Spielerzahl. var TeamsAndTotals:[team]int = map{} OnBegin<override>()<suspends>:void = # Ruft alle Teams ab set Teams = GetPlayspace().GetTeamCollection().GetTeams() # Speichert die Teams, um sie später zu referenzieren set MaybeInfiltrators = option{Teams[0]} set MaybeAttackers = option{Teams[1]} set MaybeDefenders = option{Teams[2]} if: Infiltrators := MaybeInfiltrators? Angreifer:= MaybeAttackers? Defenders := MaybeDefenders? 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") 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 in Visual Studio Code und klicke im Hauptmenü unter Verse auf Verse-Code erstellen, um dein in Verse erstelltes Gerät im Level zu aktualisieren.
-
Klicke auf Sitzung starten in der UEFN-Symbolleiste, um das Level zu testen. Wenn du deinen Level testest, sollten alle drei Teams in
TeamsAndTotalsaufgestellt werden. Dies lässt sich anhand des Logs überprüfen.
Nächster Schritt
Im nächsten Schritt dieses Tutorials lernst du, wie du Teams von Spielern zu Beginn eines Spiels asymmetrisch ausbalancieren kannst.