O script completo
O código a seguir é o script completo para um jogo de eliminação que avança os jogadores em uma série de armas como um time.
~~~(verse) using { /Fortnite.com/Characters } using { /Fortnite.com/Devices } using { /Fortnite.com/Game } using { /Fortnite.com/Teams } using { /Verse.org/Simulation }
player_map := [player]int # Este é um alias de tipo!
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{}
# Mapa dos Mapas da Equipe, em que a chave é a equipe e o valor é um mapa de # player->int key-value pairs var TeamMap : [team]player_map = map{}
OnBegin
PopulateTeamsAndPlayers()
for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Inscrever a cada plataforma de surgimento de jogador
for (Sentry : Sentries): Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # Inscrever a cada Sentinela
# Como inscrever a novos jogadores que entram no jogo
GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
PopulateTeamsAndPlayers() : void = Print("Começando a preencher jogadores") for (Team : Teams, TeamPlayers := GetPlayspace().GetTeamCollection().GetAgents[Team]): var PlayerMap : player_map = map {} for (Agent : TeamPlayers, TeamPlayer := player[Agent], FortCharacter := Agent.GetFortCharacter[]): if(set PlayerMap[TeamPlayer] = 0, WeaponTier := PlayerMap[TeamPlayer]): Print("Jogador atribuído ao PlayerMap com Nível {WeaponTier}") FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) if(set TeamMap[Team] = PlayerMap): Print(“Equipe definida com sucesso no TeamMap")
# Lida com a entrada de um novo jogador no jogo
OnPlayerAdded(InPlayer : player) : void = Print("Um novo jogador entrou!") 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("Definir o nível de arma do novo jogador como 0 no TeamMap") FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) # Inscrever-se no evento de eliminação deste jogador
# Concede armas aos jogadores com base em seu WeaponTier quando eles surgem
OnPlayerSpawn(InPlayer : agent) : void = Print("Um jogador acabou de surgir!") if: PlayerTeam := GetPlayspace().GetTeamCollection().GetTeam[InPlayer] WeaponTier:int := TeamMap[PlayerTeam][InPlayer] then: GrantWeapon(option{InPlayer}, WeaponTier) Print("O jogador que surgiu recebeu uma arma de nível {WeaponTier}")
OnPlayerEliminated(Result : elimination_result) : void = Print("Um jogador foi eliminado!") Eliminator := Result.EliminatingCharacter if (FortCharacter := Eliminator?, EliminatorAgent := FortCharacter.GetAgent[]): GiveNextWeapon(EliminatorAgent)
# Permite o teste de GiveNextWeapon falsificando sentinelas como jogadores
TestPlayerEliminated(Agent: ?agent) : void = Print("Sentinela eliminada!") if(TeamPlayer := Agent?): GiveNextWeapon(TeamPlayer)
GiveNextWeapon(EliminatingPlayer : agent) : void = Print("Encontrando um jogador para promover") var WeaponTier : int = 0 var MaybePlayerToGrant : ?agent = option{EliminatingPlayer} # O jogador ao qual conceder uma arma var MaybePlayerTeam : ?team = option{GetPlayspace().GetTeamCollection().GetTeam[EliminatingPlayer]} # A equipe da qual este jogador faz parte
if(PlayerTeam := MaybePlayerTeam?, set WeaponTier = TeamMap[PlayerTeam][EliminatingPlayer]): for(Teammate -> TeammateTier : TeamMap[PlayerTeam], TeammateTier < WeaponTier): Print("Encontrado um colega de equipe com um nível inferior no nível {TeammateTier}") 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("A eliminação do nível de jogador agora é {WeaponTier}")
if(WeaponTier >= EliminationsToEndGame): EndGame(EliminatingPlayer)
GrantWeapon(MaybePlayerToGrant, WeaponTier)
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void = Print("Promovendo o jogador ao nível {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?): ItemGranter.GrantItem(GrantedPlayer)
EndGame(InPlayer : agent) : void = Print("Jogador alcançou o Nível de Arma final, ativando EndGameDevice") EndGameDevice.Activate(InPlayer) ~~~

Por conta própria
Ao concluir este guia, você aprendeu como usar o Verse para criar um dispositivo que faz os jogadores avançarem por uma série de armas, com cada eliminação concedendo a eles ou a seus companheiros de equipe a próxima arma.
Usando o que você aprendeu, faça o seguinte:
-
Experimente diferentes ordens e combinações de armas para criar uma experiência de jogo ideal.
-
Considere manter as sentinelas e usá-las como chefes opcionais para cada equipe.
-
Veja se você consegue encontrar diferentes métodos de pontuação, como eliminar um determinado jogador de um time.