Vollständiges Script
Der folgende Code ist das vollständige Script für ein Eliminierungsspiel, das die Spieler als Team durch eine Reihe von Waffen befördert.
using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /Fortnite.com/Game }
using { /Fortnite.com/Teams }
using { /Verse.org/Simulation }
player_map := [player]int # Dies ist ein Typ-Alias!
team_elimination_game := class(creative_device):
@editable
EndGameDevice : end_game_device = end_game_device{}
@editable
var WeaponGranters : []item_granter_device = array{}
@editable
var PlayerSpawners : []player_spawner_device = array{}
@editable
var Sentries : []sentry_device = array{}
var EliminationsToEndGame : int = 0
var Teams : []team = array{}
# Karte von Teamkarten, wobei der Schlüssel das Team und der Wert eine Karte von
# Spieler->Ganzzahl-Schlüssel-Werte-Paaren ist
var TeamMap : [team]player_map = map{}
OnBegin<override>()<suspends> : void =
set Teams = GetPlayspace().GetTeamCollection().GetTeams()
set EliminationsToEndGame = WeaponGranters.Length
Print("Spieler werden zugewiesen")
PopulateTeamsAndPlayers()
für (Spawner : PlayerSpawners):
Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Abonniere die Spawnfläche jedes Spielers
für (Sentry : Sentries):
Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # Abonniere jeden Wächter
# Abonniere neue Spieler, die dem Spiel beitreten
GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
PopulateTeamsAndPlayers() : void =
Print("Karte wird bevölkert")
für (Team : Teams, TeamPlayers := GetPlayspace().GetTeamCollection().GetAgents[Team]):
var PlayerMap : player_map = map {}
für (Agent : TeamPlayers, TeamPlayer := player[Agent], FortCharacter := Agent.GetFortCharacter[]):
if(set PlayerMap[TeamPlayer] = 0, WeaponTier := PlayerMap[TeamPlayer]):
Print("Spieler der PlayerMap mit Stufe {WeaponTier} zugewiesen ")
FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated)
if(set TeamMap[Team] = PlayerMap):
Print("Dieses Team erfolgreich in der Teamkarte festgelegt")
# Verarbeitet einen neuen Spieler, der dem Spiel beitritt
OnPlayerAdded(InPlayer : player) : void =
Print("Ein neuer Spieler ist beigetreten!")
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("Waffenstufe des neuen Spielers in der TeamMap auf 0 gesetzt")
FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # Das Eliminierungsevent dieses Spielers abonnieren
# Gewährt Spielern beim Spawnen Waffen, die auf ihrem WeaponTier basieren
OnPlayerSpawn(InPlayer : agent) : void =
Print("Ein Spieler ist gespawnt!")
if:
PlayerTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer]
WeaponTier:int := TeamMap[PlayerTeam][InPlayer]
then:
GrantWeapon(option{InPlayer}, WeaponTier)
Print("Der gespawnte Spieler hat eine Waffe der Stufe {WeaponTier} erhalten")
OnPlayerEliminated(Result : elimination_result) : void =
Print("Ein Spieler wurde eliminiert!")
Eliminator := Result.EliminatingCharacter
if (FortCharacter := Eliminator?, EliminatorAgent := FortCharacter.GetAgent[]):
GiveNextWeapon(EliminatorAgent)
# Ermöglicht das Testen von GiveNextWeapon, indem Wächter als Spieler getarnt werden
TestPlayerEliminated(Agent: ?agent) : void =
Print("Wächter erledigt!")
if(TeamPlayer := Agent?):
GiveNextWeapon(TeamPlayer)
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)
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void =
Print("Spieler wird hochgestuft auf Stufe {WeaponTier}")
if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?):
ItemGranter.GrantItem(GrantedPlayer)
EndGame(InPlayer : agent) : void =
Print("Spieler hat die letzte Waffenstufe erreicht und aktiviert das EndGameDevice")
EndGameDevice.Activate(InPlayer)

Auf eigene Faust
Wenn du diese Anleitung abgeschlossen hast, hast du gelernt, wie du mit Verse ein Gerät erstellst, das die Spieler durch eine Reihe von Waffen befördert, wobei jede Eliminierung ihnen oder ihren Mitspielern die nächste Waffe gewährt.
Verwende nun das Gelernte wie folgt:
-
Probiere verschiedene Anordnungen und Kombinationen von Waffen aus, um ein optimales Spielerlebnis zu schaffen.
-
Erwäge, die Wächter zu behalten und sie als optionale Bosse für jedes Team zu verwenden.
-
Versuche, verschiedene Methoden zu finden, um zu punkten, z. B. indem ein bestimmter Spieler eines Teams eliminiert wird.