Team

Mostrar obsoleto

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

La clase Team representa una facción en un lugar de Roblox. El único padre válido para un equipo es en el servicio Teams. Los equipos ofrecen una gama de características útiles para los desarrolladores que se pueden dividir en dos grupos ásperos:

  • Características que funcionan 'fuera de la caja delimitadora'
  • Las características que los desarrolladores pueden programar en su juego.

Comportamiento del equipo integrado La siguiente funcionalidad de las Teamas existe por defecto y no requiere que el desarrollador programar ningún comportamiento personalizado.

Comportamientos de equipo extendidos opcionales Muchos desarrolladores eligieron agregar las siguientes características a los equipos en su propio código.

  • Implemente verificaciones en el código de armas para prevenir desencadenaramigable.
  • Implica controles en las puertas o en otras características que solo permiten el uso de ciertos equipos
  • Asigna periódicamente equipos para mantener el saldodel equipo

Amostras de código

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)
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])
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

  • Ler Parallel

    Esta propiedad determina si Players será colocado automáticamente en el Team cuando se unen. Si varios equipos tienen esta propiedad configurada como verdadera, Roblox intentará incluso los equipos cuando se agreguen Players.

  • Ler Parallel

    Esta propiedad establece el color de la Team. Determina la propiedad Player.TeamColor de los jugadores que son miembros del equipo. También determina el color que se muestra en la lista de jugadores y encima de las cabezas de los jugadores.

Métodos

  • GetPlayers():Instances
    Escrever Parallel

    Devuelve una lista de Players que están asignados a la Team . Un Player se considera asignado si su propiedad 1> Class.Player.Team1> es igual a la 4> Class.Team4> y 7> Class.Player.Neutral7>

Eventos

Propriedades

AutoAssignable

Ler Parallel

Esta propiedad determina si Players será colocado automáticamente en el Team cuando se unen. Si varios equipos tienen esta propiedad configurada como verdadera, Roblox intentará incluso los equipos cuando se agreguen Players.

Cuando un Class.Player se una a un juego, se asignará al Class.Team con Class.Team.AutoAssignable configurado como verdadero que tiene los jugadores más pequeños. Si no hay tal equipo disponible, se establecerá Class.Player.Neutral.

Tenga en cuenta mientras usa esta propiedad, ayudará incluso a los equipos cuando se agreguen jugadores, no hará nada cuando se eliminen los jugadores. Por esta razón, los desarrolladores pueden desear implementar su propio sistema de equilibrado de equipo.

Amostras de código

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

Esta propiedad establece el color de la Team. Determina la propiedad Player.TeamColor de los jugadores que son miembros del equipo.

Muchas de las funciones de equipo predeterminadas de Roblox se basan en el color del equipo, no en el nombre o el objeto. Por ejemplo, SpawnLocations se puede asignar a un equipo a través de SpawnLocation.TeamColor . Por esta razón, se recomienda que los desarrolladores aseguren de que cada Team tenga un color de equipo único.

Cualquier jugador que sea parte de un equipo tendrá su nombre cambiado a TeamColor del propiedaddel equipo. También estarán debajo del encabezado del equipo en la lista de jugadores.

Amostras de código

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

Devuelve una lista de Players que están asignados a la Team . Un Player se considera asignado si su propiedad 1> Class.Player.Team1> es igual a la 4> Class.Team4> y 7> Class.Player.Neutral7>

Esta función tiene varios usos potenciales, incluido contar el número de jugadores en un Team o darle a cada Player en un Team un 2>Class.Tool2> .


Devolução

Instances

Un arreglo de Players en el Team .

Amostras de código

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

Se activa cuando se asigna un Player a Class.Team. Un jugador se considera asignado si su propiedad Team es igual a la Player.Team y 2>Class.Player.Neutral2> es falsa.

Este evento es específico y solo se activará cuando un Player se una al Team específico. Cualquier función conectada a este evento se pasará al objeto Player del jugador que se unió al equipo. Por ejemplo:

Team.PlayerAdded:Connect(function(jugador) print(jugador.Name.." se ha unido al equipo") finalizar)

Parâmetros

player: Player

El Player que se agregó.


Amostras de código

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

Se activa cuando se elimina un Player de un Team . Esto puede deberse a que el Player salga del juego, 1> Class.Player.Neutral1> se establezca como cierto o que el 4> Class.Player4> se una a un equipo diferente.

Este evento es específico del equipo y solo se activará cuando un Player salga del equipo específico. Cualquier función conectada a este evento se pasará al objeto Team del jugador que salió del equipo. Por ejemplo:

Team.PlayerRemoved:Connect(function(jugador) print(jugador.Name.." ha dejado el equipo") finalizar)

Parâmetros

player: Player

El Player se eliminó.


Amostras de código

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)