Team
*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.
- Ketika bagian dari Tim, nama di atas karakter pemain akan diubah menjadi Model
- Mengubah Player.TeamColor akan menyebabkan Player.Team beralih ke Tim dengan warna Team.TeamColor yang sesuai
- Saat menggunakan daftar pemain default, pengguna akan dikumpulkan dan ditampilkan bersama-sama sebagai tim
- Mengatur Player.Neutral ke benar akan menyebabkan Player terputus dari tim, tetapi itu tidak akan mengubah Player.Team atau 1> Class.Player.TeamColor1>
- Ketika seorang Player bergabung dengan game, mereka akan dibagi ke tim dengan Team.AutoAssignable yang ditetapkan ke benar yang memiliki jumlah pemain ter sedikit. Jika tidak ada tim yang dapat ditetapkan secara otomatis, Player.Neutral akan ditetapkan ke benar
- Ketika SpawnLocation.Neutral ditetapkan ke false, hanya pemain whose Player.TeamColor cocok dengan SpawnLocation.TeamColor dapat spawn di Class.SpawnLocation itu
- Ketika SpawnLocation.AllowTeamChangeOnTouch ditetapkan ke benar, maka Player.TeamColor pemain akan berubah menjadi SpawnLocation.TeamColor ketika karakter mereka menyentuh 1> Class.SpawnLocation1>
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
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)
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])
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
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.
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
Acara
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.
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.
Properti
AutoAssignable
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
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
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
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
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
Contoh Kode
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
Contoh Kode
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
Class.Player dihapus.
Contoh Kode
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)