Team

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

The Team sınıfı Roblox dünyabir grup temsil eder.Bir Takım için geçerli tek ebeveyn hizmette bulunur: Teams .Takımlar, iki kaba grupta bölünebilecek geliştiricilere yararlı bir dizi özellik sunar:

  • Kutudan çıktığı gibi çalışan özellikler
  • Özellik geliştiricileri oyunlarına programlayabilir.

Yerleşik Takım Davranışı Takımların aşağıdaki işlevleri varsayılan olarak mevcuttur ve geliştiricinin herhangi bir özel davranışı programlamasını gerektirmez.

Opsiyonel Genişletilmiş Takım Davranışları Birçok geliştirici, kendi kodlarındaki takımlara aşağıdaki özellikleri eklemek istedi.

  • Dost ateşini engellemek için silah kodunda kontroller uygulayın.
  • Sadece belirli takımların kullanmasına izin veren kapılarda veya diğer özelliklerde kontroller uygulayın
  • Takım bakiyekorumak için periyodik olarak takımları yeniden atayın

Kod Örnekleri

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)

Özet

Özellikler

  • Bu özellik, Players'nin katılım sırasında otomatik olarak yerleştirilecek olup olmadığını belirler. TeamBirden fazla takımın bu özellik gerçek olarak ayarlanmışsa, Roblox, Players eklenirken takımları eşitlemeye çalışacaktır.

  • Bu özellik, Team 'nin rengini ayarlar.Takımın üyesi olan oyuncuların Player.TeamColor özelliğini belirler.Ayrıca oyuncu listesinde ve oyuncunun başlarının üzerinde görüntülenen renkleri de belirler.

Yöntemler

  • GetPlayers():Instances
    Paralel yaz

    Players kimlere atanmış bir liste döndürür Team .Bir onlara ait özelliği ve eşitse atanmış olarak kabul edilir ve yoksa yanlıştır.

Etkinlikler

Özellikler

AutoAssignable

Paralel oku

Bu özellik, Players'nin katılım sırasında otomatik olarak yerleştirilecek olup olmadığını belirler. TeamBirden fazla takımın bu özellik gerçek olarak ayarlanmışsa, Roblox, Players eklenirken takımları eşitlemeye çalışacaktır.

Bir Player bir oyuna katıldığında, en az oyuncu sayısına sahip Team ile doğru atanacaklar ve bunun için en az oyuncu sayısına sahip Team.AutoAssignable set edilecek.Eğer böyle bir takım mevcut değilse, Player.Neutral doğru olarak ayarlanacaktır.

Bu özelliği kullanırken not, oyuncular eklenirken takımların dengelenmesine yardımcı olacaktır, oyuncular kaldırıldığında hiçbir şey yapmayacaktır.Bu nedenle geliştiriciler kendi takım dengeleme sistemini uygulamak isteyebilir.

Kod Örnekleri

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

Paralel oku

Bu özellik, Team 'nin rengini ayarlar. Takımın üyesi olan oyuncuların Player.TeamColor özelliğini belirler.

Roblox'un varsayılan takım işlevlerinin çoğu, isim veya nesne yerine takım rengine dayanmaktadır.Örneğin, SpawnLocations bir ekibe SpawnLocation.TeamColor aracılığıyla atanabilir.Bu nedenle geliştiricilerin her birinin benzersiz bir Takım Rengi olduğundan emin olması önerilir Team .

Bir takımın parçası olan herhangi bir oyuncunun adı takımın TakımRenk özelliğine değiştirilecektir.Ayrıca oyuncu listesindeki takım başlığının altına yerleştirilecekler.

Kod Örnekleri

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)

Yöntemler

GetPlayers

Instances
Paralel yaz

Players kimlere atanmış bir liste döndürür Team .Bir onlara ait özelliği ve eşitse atanmış olarak kabul edilir ve yoksa yanlıştır.

Bu işlevin bir dizi potansiyel kullanımı vardır, bunlar arasında bir Team üzerinde oyuncu sayısını saymak veya her bir Player üzerinde bir Team üzerinde bir Tool vermek de dahil.


Dönüşler

Instances

Players 'de bir dizi Team.

Kod Örnekleri

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

Etkinlikler

PlayerAdded

Herhangi bir Player 'ye Team atanır olduğunda ateş eder.Bir oyuncu atanmış kabul edilirse, Player.Team özellikleri Team ve Player.Neutral eşitse ve false ise.

Bu olay takım spesifik ve sadece belirli bir ile birleştiğinde ateşlenecektir.Bu olaya bağlı herhangi bir işlev, takıma katılan oyuncunun Player nesnesine geçecektir.Örneğin:

Takım.OyuncuEklendi:Connect(fonksiyon(oyuncu) print(oyuncu.Adı.." takıma katıldı") bitir)

Parametreler

player: Player

Eklenen Player .


Kod Örnekleri

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

Bir Player 'den herhangi bir Team kaldırıldığında ateş eder.Bu, oyundan ayrılmasına bağlı olabilir Player , Player.Neutral gerçek olarak ayarlanması veya farklı bir takıma katılması ile Player .

Bu olay takım spesifik ve yalnızca bir Player özel Team terk ettiğinde ateşlenecektir.Bu olaya bağlı herhangi bir işlev, takımdan ayrılan oyuncunun Player nesnesine geçecektir.Örneğin:

Takım.OyuncuKaldırıldı:Connect(function(oyuncu) print(oyuncu.Adı.." takımdan ayrıldı") bitir)

Parametreler

player: Player

The Player kaldırıldı.


Kod Örnekleri

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)