Team

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Kelas Team mewakili faksi di tempat Roblox. Satu-satunya orang tua yang valid untuk Tim adalah dalam layanan Teams. Tim menawarkan berbagai fitur yang berguna bagi pengembang yang dapat dibagi menjadi dua kelompok kasar:

  • Fitur yang bekerja 'keluar dari kotak'
  • Fitur pengembang dapat diprogramkan ke dalam gamemereka.

Perilaku Tim Tertanam Funggsi berikut dari Tim ada secara default dan tidak memerlukan pengembang untuk mengkode perilaku khusus.

Perilaku Tim Ekstensif Opsional Banyak pengembang memilih untuk menambahkan fitur berikut ke tim dalam kode mereka sendiri.

  • Menerapkan periksa dalam kode senjata untuk mencegah api teman.
  • Menerapkan periksa di pintu atau fitur lain yang hanya memungkinkan tim tertentu untuk menggunakannya
  • Secara berkala atur ulang tim untuk menjaga saldotim

Contoh Kode

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)

Rangkuman

Properti

  • Baca Paralel

    Properti ini menentukan apakah Players akan ditempatkan secara otomatis di Team saat bergabung. Jika beberapa tim memiliki property set ke benar, Roblox akan mencoba untuk bahkan tim keluar saat Players ditambahkan.

  • Baca Paralel

    Properti ini menetapkan warna dari Team . Menentukan Player.TeamColor property pemain yang merupakan anggota dari tim. Juga menentukan warna yang ditampilkan di daftar pemain dan di atas kepala pemain.

Metode

  • GetPlayers():Instances
    Tulis Paralel

    Mengembalikan daftar Players yang ditugaskan ke Team . Sebuah Player dianggap ditugaskan jika 1> Class.Player.Team1> property mereka sama dengan 4> Class.Team4> dan 7>

Acara

Properti

AutoAssignable

Baca Paralel

Properti ini menentukan apakah Players akan ditempatkan secara otomatis di Team saat bergabung. Jika beberapa tim memiliki property set ke benar, Roblox akan mencoba untuk bahkan tim keluar saat Players ditambahkan.

Ketika seorang Player bergabung dengan permainan mereka akan ditetapkan ke Team dengan Team.AutoAssignable yang diatur ke benar bahwa memiliki pemain yang paling sedikit. Jika tidak ada tim seperti itu tersedia, 1> Class.Player.Neutral1> akan diatur ke benar.

Catat saat menggunakan property ini akan membantu tim bahkan ketika pemain ditambahkan, itu tidak akan melakukan apa-apa ketika pemain dihapus. Untuk alasan ini pengembang mungkin ingin menerapkan sistem keseimbangan tim mereka sendiri.

Contoh Kode

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

Baca Paralel

Item ini menetapkan warna dari Team . Menentukan Player.TeamColor property dari pemain yang adalah anggota dari tim.

Banyak fungsi tim default Roblox berdasarkan warna tim, bukan nama atau objek. Misalnya, SpawnLocations dapat ditetapkan ke tim melalui SpawnLocation.TeamColor. Untuk alasan ini, disarankan agar pengembang menjamin setiap Team memiliki warna Tim yang unik.

Setiap pemain yang merupakan bagian dari tim akan memiliki warna nama yang berubah menjadi property TeamColor tim. Mereka juga akan ditempatkan di bawah kepala tim di daftar pemain.

Contoh Kode

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)

Metode

GetPlayers

Instances
Tulis Paralel

Mengembalikan daftar Players yang ditugaskan ke Team . Sebuah Player dianggap ditugaskan jika 1> Class.Player.Team1> property mereka sama dengan 4> Class.Team4> dan 7>

Fungsi ini memiliki beberapa penggunaan potensial, termasuk menghitung jumlah pemain di Team atau memberikan setiap Player di Team dengan 1> Class.Tool1> .


Memberikan nilai

Instances

Sebuah matriks dari Players di dalam Team .

Contoh Kode

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

Acara

PlayerAdded

Dibakar setiap kali seorang pemain diberikan kepada Player . Seorang pemain dianggap diberikan jika properti mereka Team sama dengan Player.Team dan 2>Class.Player.Neutral2> adalah palsu.

Acara ini bersifat tim dan hanya akan diaktifkan ketika Player bergabung dengan Team khusus. Fungsi apa pun yang terhubung ke acara ini akan dilewati Player objek pemain yang bergabung dengan tim. Misalnya:

Team.PlayerAdded:Connect(function(pemain) print(pemain.Name.." telah bergabung dengan tim") akhiri)

Parameter

player: Player

The Player yang ditambahkan.


Contoh Kode

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

Mengakhiri setiap saat ketika Player dihapus dari Team . Ini dapat disebabkan oleh Player meninggalkan game, 1> Class.Player.Neutral1> diatur untuk benar atau 4> Class.Player4> bergabung dengan tim yang berbeda.

Acara ini bersifat tim dan hanya akan diaktifkan ketika Player meninggalkan objek Team khusus. Setiap fungsi yang terhubung ke acara ini akan diberikan kepada objek Player pemain yang meninggalkan tim. Misalnya:

Team.PlayerRemoved: Connect(function(pemain) print(pemain.Name.." telah meninggalkan tim") akhiri)

Parameter

player: Player

Class.Player dihapus.


Contoh Kode

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)