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 class represents a faction in a Roblox dünya. The only valid parent for a Team is in the Teams service. Teams offer a range of features that are useful to developers that can be divided into two rough groups:

  • Kutudan çıkış işleyen özellikler
  • Geliştiricilerin oyunlarına kodlayabileceği özellikler.

Yerleşik Takım Davranışı Takımlar'ın aşağıdaki işlevleri varsayılır olarak mevcut olup geliştiricinin herhangi bir özel davranışı programlaması gerekmez.

  • Bir Takım'ın bir parçası, bir oyuncunun karakterinin üzerindeki isim Model ile renklenir.
  • Değiştirme Player.TeamColor ile, Player.Team 'ın ilgili Team.TeamColor ile takım değiştirecek
  • Varsayılan oyuncu listesini kullanırken kullanıcılar bir takım olarak bir araya getirilecek ve gösterilecektir
  • Anahtarı Player.Neutral ın doğru olmasına ayarlayarak Player ı takım ile birleştirmeyi engeller, ancak Player.Team veya 1> Class.Player.TeamColor1> değiştirmez
  • Bir Player bir oyuna katıldığında, bir takıma Team.AutoAssignable ile ayarlanmış olan iletişim kurulacaktır. Eğer bir takım kullanılamıyorsa, Player.Neutral ile ayarlanacaktır.
  • Class.SpawnLocation.Neutral doğru olarak ayarlandığında, sadece Player.TeamColor ile eşleşen oyuncular o SpawnLocation.TeamColor üzerinde oluşturulabilir.
  • Class.SpawnLocation.AllowTeamChangeOnTouch Class.Player.TeamColor``Class.SpawnLocation.TeamColor 1>Class.SpawnLocation.TeamColor1> 4>Class.SpawnLocation.AllowPlayerChange4> 7>Class.SpawnLocation.AllowPlayerChange7> 0>Class.SpawnLocation.AllowPlayerChange0> 3>Class.SpawnLocation.AllowPlayerChange3> 6>Class.SpawnLocation

Ekstra Gelişmiş Takım Davranışları Birçok geliştirici kendi kodlarındaki takımlara aşağıdaki özellikleri eklemek için tercih etti.

  • Müttefik ateşi önlemek için silah kodunda kontrolleri uygula.
  • Sadece belirli takımların kullanımına izin veren kapılar veya diğer özelliklerde kontrolleri uygulayın
  • Takım dengelemesini korumak için takımları periyodik olarak yeniden atayın

Kod Örnekleri

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)

Özet

Özellikler

  • Paralel oku

    Bu özellik, katılırken Players ile otomatik olarak Team arasına yerleştirileceğini belirler. Eğer birkaç takım bu özellik setini doğru yaparsa, Roblox, katılırken Players ile birlikte bir takım dışarıda deneyecektir.

  • Bu özellik, Team 'nın rengini ayarlar. Takımın üyelerinden olan oyuncuların Player.TeamColor özelliğini belirler. Ayrıca, oyuncu listesindeki ve oyuncunun başındaki renkleri belirler.

Yöntemler

  • GetPlayers():Instances
    Paralel yaz

    Class.Player|Players ile ilgili bir liste içerir. Bir Team ile ilgili bir liste içerirse, özellikleri Player ile aynıdır ve 1> Class.Player.Neutral1> ile sahte ise değerlidir.

Etkinlikler

  • Bir Player bir Team 'e atanırsa oyuncu kendi Player.Team özelliğiyle eşleştirilir. Bir oyuncunun 1>Class.Player.Team1> özelliği ile eşleşmesi durumunda, oyuncu kendi 4>Class.Player.Neutral4> özelliğiyle eşleşmes

  • Bir Class.Player``Class.Team から kaldırıldığında herhangi bir zaman ateştirir. Bu, Player oyundan ayrıldığından, 1> Class.Player.Neutral1> doğru olarak ayarlandığında veya 4> Class.Player4> bir f

Özellikler

AutoAssignable

Paralel oku

Bu özellik, katılırken Players ile otomatik olarak Team arasına yerleştirileceğini belirler. Eğer birkaç takım bu özellik setini doğru yaparsa, Roblox, katılırken Players ile birlikte bir takım dışarıda deneyecektir.

Bir Player bir oyuna katıldığında, onlara Team ile birlikte Team.AutoAssignable ayarına sahip olacaklar. Eğer böyle bir takım mevcut değilse, 1> Class.Player.Neutral1> bir takım ayarına sahip olacak.

Bu özellik kullanılırken dikkat edilmesi, oyuncular eklenince takımların dengelenmesine yardımcı olacaktır, oyuncular kaldırıldığında hiçbir şey yapmaz. Bu nedenle geliştiriciler kendi takım dengeleme sistemlerini uygulayabilir.

Kod Örnekleri

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 'nın rengini ayarlar. Takımın üyelerinin Player.TeamColor özelliğini belirler.

Roblox'un varsayılan takım işlevlerinin çoğu, takım rengine dayanmaktadır, bu nedenle isim veya nesne değil. Örneğin, SpawnLocations , bir takıma SpawnLocation.TeamColor ile atanabilir. Bu nedenle, geliştiricilerin her Team

Takımın bir parçası olan herhangi bir oyuncunun takımın TeamColor özelliğine kendi isim rengini değiştirecek. Ayrıca oyuncu listesinin altında takım başlığının altında yer alacaktır.

Kod Örnekleri

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

Class.Player|Players ile ilgili bir liste içerir. Bir Team ile ilgili bir liste içerirse, özellikleri Player ile aynıdır ve 1> Class.Player.Neutral1> ile sahte ise değerlidir.

Bu işlevin bir dizi potansiyel kullanımı vardır, bunlar sayıyı Team ın veya her bir Player 'ın bir Team üzerinde bir 2>Class.Tool2> vermesi.


Dönüşler

Instances

Class.Team içindeki Team matrisi.

Kod Örnekleri

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

Bir Player bir Team 'e atanırsa oyuncu kendi Player.Team özelliğiyle eşleştirilir. Bir oyuncunun 1>Class.Player.Team1> özelliği ile eşleşmesi durumunda, oyuncu kendi 4>Class.Player.Neutral4> özelliğiyle eşleşmes

Bu olay takım spesifik ve sadece Player ile birleştiğinde yanacaktır. Herhangi bir Team ile ilgili işlev bağlantısı, katılan takımın Player ile bağlanmasından sonra oyuncunun katılımını alacaktır. Örneğin:

Team.PlayerAdded:Connect(function(oyuncu) print(oyuncu.Name.." has joined the team") bitir)

Parametreler

player: Player

Eklenen Player .


Kod Örnekleri

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 Class.Player``Class.Team から kaldırıldığında herhangi bir zaman ateştirir. Bu, Player oyundan ayrıldığından, 1> Class.Player.Neutral1> doğru olarak ayarlandığında veya 4> Class.Player4> bir f

Bu olay takım spesifikidir ve sadece bir Player takımdan ayrıldığında ateşlenecektir. Bu olaya bağlı herhangi bir işlev, Team oyuncusunun takımdan ayrıldığındaki oyunun Player nesline geçecektir. Örneğin:

Team.PlayerRemoved: Connect(function(oyuncu) print(oyuncu.Name.." takımı terk etti") bitir)

Parametreler

player: Player

Class.Player kaldırıldı.


Kod Örnekleri

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)