Nachdem du deine Karten eingerichtet hast, musst du als Nächstes die Waffen verteilen, wenn ein Spieler eine Eliminierung erreicht hat.
Wenn ein Spieler eine Eliminierung erzielt, solltest du diese beiden Regeln anwenden:
-
Wenn der Spieler nicht die höchste Waffenstufe in seinem Team hat oder alle Spieler die gleiche Waffenstufe haben, wird er in die nächste Waffenstufe befördert.
-
Wenn es in dem Team einen Spieler mit einer niedrigeren Waffenstufe gibt, befördere stattdessen diesen Spieler.
Dadurch wird sichergestellt, dass die Spieler als Team durch die Waffen aufsteigen und kein Spieler mehr als eine Waffe vor oder hinter einem seiner Teamkameraden liegt.
Dazu musst du wissen, wann ein Spieler eine Eliminierung erzielt. Dann vergleichst du seine Waffenstufe mit der aller anderen Spieler in seinem Team und beförderst einen Spieler auf der Grundlage der beiden oben genannten Regeln.
Befolge diese Schritte, um den Spielern Waffen zu geben, wenn sie eine Eliminierung erzielen.
-
Füge eine neue Methode
GiveNextWeaponzur Klasseteam_elimination_gamehinzu. Bei dieser Methode erhält ein Spieler eine Waffe, wenn er oder jemand aus seinem Team eine Eliminierung nach den beiden oben genannten Regeln erzielt.GiveNextWeapon(EliminatingPlayer : agent) : void = Print("Suche nach Spieler, der in eine höhere Stufe aufsteigt") -
Aktualisiere
OnPlayerEliminated, um zu verfolgen, welcher Spieler eine Eliminierung erzielt hat. DaOnPlayerEliminatedeinelimination_resultakzeptiert, erhältst du einen Verweis sowohl auf einen eliminierten als auch auf einen eliminierenden Charakter. Da Spieler auf verschiedene Weise eliminiert werden können (z. B. durch Fallschaden, Wachen, Selbstschaden usw.), musst du herausfinden, obEliminatingCharacterein tatsächlicherFortCharacter(d. h. ein tatsächlicher Spieler) ist.- Rufe eine Referenz auf
Result.EliminatingCharacterab und speichere sie in einer lokalen OptionsvariablenEliminator. Prüfe, obEliminatorein gültigerFortCharacterist, und wenn ja, speichere den Agent für diesen Charakter in einer anderen VariablenEliminatorAgent. Übergib zum SchlussEliminatorAgentanGiveNextWeapon.
OnPlayerEliminated(Result : elimination_result) : void = Print("Ein Spieler wurde eliminiert!") Eliminator := Result.EliminatingCharacter if (FortCharacter := Eliminator?, EliminatorAgent := FortCharacter.GetAgent[]): GiveNextWeapon(EliminatorAgent) - Rufe eine Referenz auf
-
GiveNextWeaponmuss mehrere Variablen verfolgen, um dem richtigen Spieler eine neue Waffe zu geben. Füge die folgenden Deklarationen zuGiveNextWeaponhinzu.-
Eine Ganzzahl-Variable
WeaponTier. Hier wird die Waffenstufe des Spielers angegeben, dem eine Waffe gewährt werden soll. -
Eine optionale Agentenvariable namens
MaybePlayerToGrant, die den Spieler angibt, dem eine Waffe gewährt werden soll. Standardmäßig ist dies der Spieler, der anGiveNextWeaponübergeben wird. -
Eine optionale Team-Variable namens
MaybePlayerTeam, die das Team des Spielers angibt, dem eine Waffe gewährt werden soll. Standardmäßig ist dies das Team des Spielers, der anGiveNextWeaponübergeben wird.
GiveNextWeapon(EliminatingPlayer : agent) : void = Print("Suche nach Spieler, der in eine höhere Stufe aufsteigt") var WeaponTier : int = 0 var MaybePlayerToGrant : ?agent = option{EliminatingPlayer} # Der Spieler, dem eine Waffe gewährt wird var MaybePlayerTeam : ?team = option{GetPlayspace().GetTeamCollection().GetTeam[EliminatingPlayer]} # Das Team, zu dem dieser Spieler gehört -
-
Extrahiere den Wert von
MaybePlayerTeamin eine lokale VariablePlayerTeamund setze dannWeaponTierauf den Wert der Punktzahl des Spielers inTeamMap.var MaybePlayerTeam : ?team = option{GetPlayspace().GetTeamCollection().GetTeam[EliminatingPlayer]} # Das Team, zu dem dieser Spieler gehört if(PlayerTeam := MaybePlayerTeam?, set WeaponTier = TeamMap[PlayerTeam][EliminatingPlayer]): -
Gehe die einzelnen Spieler des Teams durch und vergleiche ihre Waffenstufe. Wenn du einen Spieler auf einer niedrigeren Stufe findest, setze
MaybePlayerToGrantauf diesen Spieler undWeaponTierauf seine Punktzahl. Da es sich beiTeamMapum eine Karte handelt, kannst du sowohl den Schlüssel (Spieler) als auch den Wert (Waffenstufe) als lokale Variable extrahieren, indem du die SyntaxTeammate -> TeammateTierverwendest.if(PlayerTeam := MaybePlayerTeam?, set WeaponTier = TeamMap[PlayerTeam][EliminatingPlayer]): für(Teammate -> TeammateTier : TeamMap[PlayerTeam], TeammateTier < WeaponTier): Print("Teamkollege mit niedrigerer Stufe auf Stufe {TeammateTier} gefunden") if(set WeaponTier = TeamMap[PlayerTeam][Teammate]): set MaybePlayerToGrant = option{Teammate} -
Sobald du den Spieler mit der niedrigsten Waffenstufe gefunden hast, erhöhe seine
WeaponTierum eins und setze seine Waffenstufe dann inTeamMapaufWeaponTier.if(PlayerTeam := MaybePlayerTeam?, set WeaponTier = TeamMap[PlayerTeam][EliminatingPlayer]): für(Teammate -> TeammateTier : TeamMap[PlayerTeam], TeammateTier < WeaponTier): Print("Teamkollege mit niedrigerer Stufe auf Stufe {TeammateTier} gefunden") if(set WeaponTier = TeamMap[PlayerTeam][Teammate]): set MaybePlayerToGrant = option{Teammate} set WeaponTier = WeaponTier + 1 if(PlayerTeam := MaybePlayerTeam?, PlayerToGrant := player[MaybePlayerToGrant?], set TeamMap[PlayerTeam][PlayerToGrant] = WeaponTier): Print("Die Stufe des eliminierenden Spielers ist jetzt {WeaponTier}") -
Dies ist eine gute Stelle, um zu überprüfen, ob ein Spieler das Spiel gewonnen hat, denn eine Erhöhung der Waffenstufe kann dazu führen, dass er die Anzahl der Eliminierungen überschreitet, die für ein Spielende erforderlich sind.
- Erstelle eine neue Methode
EndGamein der KlasseTeam_Elimination_game. Diese Methode aktiviert dasEndGameDevicefür den angegebenen Spieler, wenn dieser die letzte Waffenstufe erreicht hat. Die fertige Methode sollte wie folgt aussehen:
EndGame(InPlayer : agent) : void = Print("Spieler hat die letzte Waffenstufe erreicht und aktiviert das EndGameDevice") EndGameDevice.Activate(InPlayer)- Prüfe in
GiveNextWeaponnach dem Erhöhen der Waffenstufe des Spielers,if WeaponTier >= EliminationsToEndGame. Wenn ja, rufeEndGameauf und übergib den Spieler.
if(PlayerTeam := MaybePlayerTeam?, PlayerToGrant := player[MaybePlayerToGrant?], set TeamMap[PlayerTeam][PlayerToGrant] = WeaponTier): Print("Die Stufe des eliminierenden Spielers ist jetzt {WeaponTier}") if(WeaponTier >= EliminationsToEndGame): EndGame(EliminatingPlayer) - Erstelle eine neue Methode
-
Rufe andernfalls
GrantWeaponauf demGrantedPlayerauf.if(WeaponTier >= EliminationsToEndGame): EndGame(EliminatingPlayer) GrantWeapon(MaybePlayerToGrant, WeaponTier) -
Die fertige Methode
GiveNextWeaponsollte wie der folgende Code aussehen.GiveNextWeapon(EliminatingPlayer : agent) : void = Print("Suche nach Spieler, der in eine höhere Stufe aufsteigt") var WeaponTier : int = 0 var MaybePlayerToGrant : ?agent = option{EliminatingPlayer} # Der Spieler, dem eine Waffe gewährt wird var MaybePlayerTeam : ?team = option{GetPlayspace().GetTeamCollection().GetTeam[EliminatingPlayer]} # Das Team, zu dem dieser Spieler gehört if(PlayerTeam := MaybePlayerTeam?, set WeaponTier = TeamMap[PlayerTeam][EliminatingPlayer]): für(Teammate -> TeammateTier : TeamMap[PlayerTeam], TeammateTier < WeaponTier): Print("Teamkollege mit niedrigerer Stufe auf Stufe {TeammateTier} gefunden") if(set WeaponTier = TeamMap[PlayerTeam][Teammate]): set MaybePlayerToGrant = option{Teammate} set WeaponTier = WeaponTier + 1 if(PlayerTeam := MaybePlayerTeam?, PlayerToGrant := player[MaybePlayerToGrant?], set TeamMap[PlayerTeam][PlayerToGrant] = WeaponTier): Print("Die Stufe des eliminierenden Spielers ist jetzt {WeaponTier}") if(WeaponTier >= EliminationsToEndGame): EndGame(EliminatingPlayer) GrantWeapon(MaybePlayerToGrant, WeaponTier)
Speichere das Script in Visual Studio Code, kompiliere es und klicke in der UEFN-Symbolleiste auf Sitzung starten, um das Level zu testen. Wenn du dein Level testest, solltest du wieder mit der ersten Waffe aus dem Array WeaponGranters spawnen. Dies lässt sich anhand des Logs überprüfen. Wenn du einen gegnerischen Spieler ausschaltest, solltest du zur nächsten Waffe aufsteigen. Hochstufungen sollten die beiden oben genannten Regeln befolgen. Die Hochstufung über die letzte Waffe in der Sequenz hinaus sollte das Spiel mit dem eliminierenden Spieler als Sieger beenden.

Nächster Schritt
Im [nächsten Schritt]((team-elimination-game-6-handling-a-player-joining-a-game-in-progress-in-verse) dieses Tutorials lernst du, wie du Spieler zu deiner Karte hinzufügst und ihnen eine Waffe zuweist, wenn sie einem laufenden Spiel beitreten.