Team

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

A classe Team representa uma facção em um local Roblox.O único pai válido para uma Equipe está no serviço Teams.Equipes oferecem uma variedade de recursos úteis para os desenvolvedores que podem ser divididos em dois grupos aproximados:

  • Recursos que funcionam 'fora da caixa'
  • Recursos que os desenvolvedores podem programar em seu jogo.

Comportamento de Equipe Integrado A seguinte funcionalidade de Equipes existe por padrão e não requer que o desenvolvedor programa nenhum comportamento personalizado.

  • Quando parte de uma equipe, o nome acima do personagem de um jogador Model será colorido para o Team.TeamColor
  • Mudar Player.TeamColor vai fazer com que Player.Team mude para a Equipe com o correspondente Team.TeamColor
  • Ao usar a lista de jogadores padrão, os usuários serão agrupados e exibidos juntos como uma Equipe
  • Definir Player.Neutral para verdade causará a desassociação do Player com a Equipe, mas não alterará Player.Team ou Player.TeamColor
  • Quando um Player se junta a um jogo, eles serão alocados à equipe com Team.AutoAssignable definido como verdadeiro que tem o menor número de jogadores.Se não houver equipe disponível para atribuição automática, Player.Neutral será definido como verdadeiro
  • Quando é definido como falso, apenas jogadores cujas combinações correspondam a só podem aparecer naquela combinação
  • Quando é definido como verdadeiro, o de um jogador mudará para quando seu personagem tocar o

Comportamentos de Equipe Estendida Opcionais Muitos desenvolvedores escolheram adicionar os seguintes recursos às equipes em seu próprio código.

  • Implemente verificações no código da arma para prevenir o Iniciar / executaramigo.
  • Implementar verificações em portas ou outros recursos que permitem que apenas determinadas equipes os usem
  • Reatribuir periodicamente equipes para manter o equilíbrio de equipes

Amostras de código

This code sample includes a simple example of how to re-balance teams. When Team.AutoAssignable is set to true players will be added to Teams in a balanced fashion. However as Players leave the game this can lead to unbalanced teams as players are not reallocated. This code keeps track of the number of players in each team and, when players leave will check to see if the teams need re-balancing.

Simple Team Rebalance

local Teams = game:GetService("Teams")
-- create two teams
local redTeam = Instance.new("Team")
redTeam.TeamColor = BrickColor.new("Bright red")
redTeam.AutoAssignable = true
redTeam.Name = "Red Team"
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.TeamColor = BrickColor.new("Bright blue")
blueTeam.AutoAssignable = true
blueTeam.Name = "Blue Team"
blueTeam.Parent = Teams
-- start counting the number of players on each team
local numberRed, numberBlue = 0, 0
local function playerAdded(team)
-- increase the team's count by 1
if team == redTeam then
numberRed = numberRed + 1
elseif team == blueTeam then
numberBlue = numberBlue + 1
end
end
local function playerRemoved(team)
-- decrease the team's count by 1
if team == redTeam then
numberRed = numberRed - 1
elseif team == blueTeam then
numberBlue = numberBlue - 1
end
-- check if the teams are unbalanced
local bigTeam, smallTeam = nil, nil
if (numberRed - numberBlue) > 2 then
bigTeam = redTeam
smallTeam = blueTeam
elseif (numberBlue - numberRed) > 2 then
bigTeam = blueTeam
smallTeam = redTeam
end
if bigTeam then
-- pick a random player
local playerList = bigTeam:GetPlayers()
local player = playerList[math.random(1, #playerList)]
-- check the player exists
if player then
-- change the player's team
player.TeamColor = smallTeam.TeamColor
-- respawn the player
player:LoadCharacter()
end
end
end
-- listen for players being added / removed
blueTeam.PlayerAdded:Connect(function(_player)
playerAdded(blueTeam)
end)
blueTeam.PlayerRemoved:Connect(function(_player)
playerRemoved(blueTeam)
end)
redTeam.PlayerAdded:Connect(function(_player)
playerAdded(redTeam)
end)
redTeam.PlayerRemoved:Connect(function(_player)
playerRemoved(redTeam)
end)

This code sample includes a quick function that can be added to weapons in a place to prevent them from team killing. It will return false when the two players are on different teams or if either of them is neutral.

Team Kill Check

local Players = game:GetService("Players")
function checkTeamKill(playerAttack, playerVictim)
if playerAttack.Team ~= playerVictim.Team or playerAttack.Neutral or playerVictim.Neutral then
return false
end
return true
end
local players = Players:GetPlayers()
checkTeamKill(players[1], players[2])

The following code sample will create a door in the Workspace that can only be walked through by Players on the Bright red team.

Team Only Door

local Players = game:GetService("Players")
local door = Instance.new("Part")
door.Anchored = true
door.Size = Vector3.new(7, 10, 1)
door.Position = Vector3.new(0, 5, 0)
door.Parent = workspace
local debounce = false
door.Touched:Connect(function(hit)
if not debounce then
debounce = true
if hit then
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and player.TeamColor == BrickColor.new("Bright red") then
door.Transparency = 0.5
door.CanCollide = false
task.wait(3)
door.Transparency = 0
door.CanCollide = true
end
end
task.wait(0.5)
debounce = false
end
end)

Resumo

Propriedades

  • Essa propriedade determina se Players será automaticamente colocada no Team ao se juntar.Se várias equipes tiverem essa propriedade definida como verdadeira, o Roblox tentará igualar as equipes quando Players.

  • Ler Parallel

    Essa propriedade define a cor do Team .Determina a propriedade Player.TeamColor dos jogadores que são membros da Equipe.Também determina a cor exibida na lista de jogadores e sobre as cabeças do jogador.

Métodos

Eventos

Propriedades

AutoAssignable

Ler Parallel

Essa propriedade determina se Players será automaticamente colocada no Team ao se juntar.Se várias equipes tiverem essa propriedade definida como verdadeira, o Roblox tentará igualar as equipes quando Players.

Quando um Player se junta a um jogo, eles serão designados para o Team com Team.AutoAssignable definido como verdadeiro que tem o menor número de jogadores.Se nenhuma equipe assim disponível estiver disponível, Player.Neutral será definido como verdadeiro.

Observe ao usar essa propriedade ajudará a equilibrar as equipes quando os jogadores forem adicionados, não fará nada quando os jogadores forem removidos.Por esse motivo, os desenvolvedores podem desejar implementar seu próprio sistema de equilíbrio de equipes.

Amostras de código

This code sample includes a simple example of how to re-balance teams. When Team.AutoAssignable is set to true players will be added to Teams in a balanced fashion. However as Players leave the game this can lead to unbalanced teams as players are not reallocated. This code keeps track of the number of players in each team and, when players leave will check to see if the teams need re-balancing.

Simple Team Rebalance

local Teams = game:GetService("Teams")
-- create two teams
local redTeam = Instance.new("Team")
redTeam.TeamColor = BrickColor.new("Bright red")
redTeam.AutoAssignable = true
redTeam.Name = "Red Team"
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.TeamColor = BrickColor.new("Bright blue")
blueTeam.AutoAssignable = true
blueTeam.Name = "Blue Team"
blueTeam.Parent = Teams
-- start counting the number of players on each team
local numberRed, numberBlue = 0, 0
local function playerAdded(team)
-- increase the team's count by 1
if team == redTeam then
numberRed = numberRed + 1
elseif team == blueTeam then
numberBlue = numberBlue + 1
end
end
local function playerRemoved(team)
-- decrease the team's count by 1
if team == redTeam then
numberRed = numberRed - 1
elseif team == blueTeam then
numberBlue = numberBlue - 1
end
-- check if the teams are unbalanced
local bigTeam, smallTeam = nil, nil
if (numberRed - numberBlue) > 2 then
bigTeam = redTeam
smallTeam = blueTeam
elseif (numberBlue - numberRed) > 2 then
bigTeam = blueTeam
smallTeam = redTeam
end
if bigTeam then
-- pick a random player
local playerList = bigTeam:GetPlayers()
local player = playerList[math.random(1, #playerList)]
-- check the player exists
if player then
-- change the player's team
player.TeamColor = smallTeam.TeamColor
-- respawn the player
player:LoadCharacter()
end
end
end
-- listen for players being added / removed
blueTeam.PlayerAdded:Connect(function(_player)
playerAdded(blueTeam)
end)
blueTeam.PlayerRemoved:Connect(function(_player)
playerRemoved(blueTeam)
end)
redTeam.PlayerAdded:Connect(function(_player)
playerAdded(redTeam)
end)
redTeam.PlayerRemoved:Connect(function(_player)
playerRemoved(redTeam)
end)

TeamColor

Ler Parallel

Essa propriedade define a cor do Team . Determina a propriedade Player.TeamColor dos jogadores que são membros da Equipe.

Muita da funcionalidade padrão da equipe do Roblox é baseada na cor da equipe, ao invés do nome ou do Objeto.Por exemplo, SpawnLocations pode ser atribuído a uma equipe através de SpawnLocation.TeamColor .Por esse motivo, é recomendado que os desenvolvedores garantam que cada Team tenha uma Cor de Equipe única.

Qualquer jogador que faça parte de uma equipe terá seu nome alterado para a propriedade TeamColor da Equipe.Eles também serão colocados abaixo da cabeça da equipe na lista de jogadores.

Amostras de código

The following code sample will create a door in the Workspace that can only be walked through by Players on the Bright red team.

Team Only Door

local Players = game:GetService("Players")
local door = Instance.new("Part")
door.Anchored = true
door.Size = Vector3.new(7, 10, 1)
door.Position = Vector3.new(0, 5, 0)
door.Parent = workspace
local debounce = false
door.Touched:Connect(function(hit)
if not debounce then
debounce = true
if hit then
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and player.TeamColor == BrickColor.new("Bright red") then
door.Transparency = 0.5
door.CanCollide = false
task.wait(3)
door.Transparency = 0
door.CanCollide = true
end
end
task.wait(0.5)
debounce = false
end
end)

Métodos

GetPlayers

Instances
Escrever Parallel

Retorna uma lista de Players quem são designados para o Team.Um Player é considerado atribuído se sua propriedade Player.Team for igual à Team e Player.Neutral for falsa.

Essa função tem uma série de usos potenciais, incluindo contar o número de jogadores em um Team ou dar a cada Player em um Team um Tool .


Devolução

Instances

Um array de Players em o Team.

Amostras de código

The example below prints the number of players on each Team.

Teams GetTeams

local Teams = game:GetService("Teams")
local teams = Teams:GetTeams()
for _, team in pairs(teams) do
local players = team:GetPlayers()
print("Team", team.Name, "has", #players, "players")
end

Eventos

PlayerAdded

Incêndios sempre que um Player é atribuído ao Team.Um jogador é considerado atribuído se sua propriedade Player.Team for igual à Team e Player.Neutral for falsa.

Este evento é específico da equipe e só disparará quando um Player juntar-se ao específico Team.Qualquer função conectada a este evento receberá o objeto Player do jogador que se juntou à Equipe.Por exemplo:

Team.PlayerAdded:Connect(function(jogador) print(jogador.Name.." se juntou à Equipe") terminar/parar/sair)

Parâmetros

player: Player

O Player que foi adicionado.


Amostras de código

This code sample includes a simple example of how to re-balance teams. When Team.AutoAssignable is set to true players will be added to Teams in a balanced fashion. However as Players leave the game this can lead to unbalanced teams as players are not reallocated. This code keeps track of the number of players in each team and, when players leave will check to see if the teams need re-balancing.

Simple Team Rebalance

local Teams = game:GetService("Teams")
-- create two teams
local redTeam = Instance.new("Team")
redTeam.TeamColor = BrickColor.new("Bright red")
redTeam.AutoAssignable = true
redTeam.Name = "Red Team"
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.TeamColor = BrickColor.new("Bright blue")
blueTeam.AutoAssignable = true
blueTeam.Name = "Blue Team"
blueTeam.Parent = Teams
-- start counting the number of players on each team
local numberRed, numberBlue = 0, 0
local function playerAdded(team)
-- increase the team's count by 1
if team == redTeam then
numberRed = numberRed + 1
elseif team == blueTeam then
numberBlue = numberBlue + 1
end
end
local function playerRemoved(team)
-- decrease the team's count by 1
if team == redTeam then
numberRed = numberRed - 1
elseif team == blueTeam then
numberBlue = numberBlue - 1
end
-- check if the teams are unbalanced
local bigTeam, smallTeam = nil, nil
if (numberRed - numberBlue) > 2 then
bigTeam = redTeam
smallTeam = blueTeam
elseif (numberBlue - numberRed) > 2 then
bigTeam = blueTeam
smallTeam = redTeam
end
if bigTeam then
-- pick a random player
local playerList = bigTeam:GetPlayers()
local player = playerList[math.random(1, #playerList)]
-- check the player exists
if player then
-- change the player's team
player.TeamColor = smallTeam.TeamColor
-- respawn the player
player:LoadCharacter()
end
end
end
-- listen for players being added / removed
blueTeam.PlayerAdded:Connect(function(_player)
playerAdded(blueTeam)
end)
blueTeam.PlayerRemoved:Connect(function(_player)
playerRemoved(blueTeam)
end)
redTeam.PlayerAdded:Connect(function(_player)
playerAdded(redTeam)
end)
redTeam.PlayerRemoved:Connect(function(_player)
playerRemoved(redTeam)
end)

PlayerRemoved

Incêndios sempre que um Player é removido de um Team .Isso pode ser devido ao Player sair do jogo, Player.Neutral sendo definido como verdadeiro ou o Player entrar em uma Equipediferente.

Este evento é específico da equipe e só disparará quando um Player deixar o específico Team.Qualquer função conectada a este evento receberá o objeto Player do jogador que deixou a Equipe.Por exemplo:

Team.PlayerRemoved:Connect(function(jogador) print(jogador.Name.." deixou a Equipe") terminar/parar/sair)

Parâmetros

player: Player

O Player removido.


Amostras de código

This code sample includes a simple example of how to re-balance teams. When Team.AutoAssignable is set to true players will be added to Teams in a balanced fashion. However as Players leave the game this can lead to unbalanced teams as players are not reallocated. This code keeps track of the number of players in each team and, when players leave will check to see if the teams need re-balancing.

Simple Team Rebalance

local Teams = game:GetService("Teams")
-- create two teams
local redTeam = Instance.new("Team")
redTeam.TeamColor = BrickColor.new("Bright red")
redTeam.AutoAssignable = true
redTeam.Name = "Red Team"
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.TeamColor = BrickColor.new("Bright blue")
blueTeam.AutoAssignable = true
blueTeam.Name = "Blue Team"
blueTeam.Parent = Teams
-- start counting the number of players on each team
local numberRed, numberBlue = 0, 0
local function playerAdded(team)
-- increase the team's count by 1
if team == redTeam then
numberRed = numberRed + 1
elseif team == blueTeam then
numberBlue = numberBlue + 1
end
end
local function playerRemoved(team)
-- decrease the team's count by 1
if team == redTeam then
numberRed = numberRed - 1
elseif team == blueTeam then
numberBlue = numberBlue - 1
end
-- check if the teams are unbalanced
local bigTeam, smallTeam = nil, nil
if (numberRed - numberBlue) > 2 then
bigTeam = redTeam
smallTeam = blueTeam
elseif (numberBlue - numberRed) > 2 then
bigTeam = blueTeam
smallTeam = redTeam
end
if bigTeam then
-- pick a random player
local playerList = bigTeam:GetPlayers()
local player = playerList[math.random(1, #playerList)]
-- check the player exists
if player then
-- change the player's team
player.TeamColor = smallTeam.TeamColor
-- respawn the player
player:LoadCharacter()
end
end
end
-- listen for players being added / removed
blueTeam.PlayerAdded:Connect(function(_player)
playerAdded(blueTeam)
end)
blueTeam.PlayerRemoved:Connect(function(_player)
playerRemoved(blueTeam)
end)
redTeam.PlayerAdded:Connect(function(_player)
playerAdded(redTeam)
end)
redTeam.PlayerRemoved:Connect(function(_player)
playerRemoved(redTeam)
end)