Teams
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Layanan Tim menyimpan objek Team game. Team objek harus menjadi anggota dari layanan Tim.
Tim menawarkan berbagai fitur yang berguna bagi pengembang. Fitur-fitur ini dapat dibagi menjadi fitur yang bekerja di luar kotak dan fitur yang dapat dibrogram pengembang ke dalam gamemereka.
Perilaku tim bawaan Fungsi 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 switch ke Tim dengan warna yang sesuai Team.TeamColor
- Saat menggunakan daftar pemain default pengguna akan dibagi menjadi beberapa kelompok dan ditampilkan berdasarkan tim
- Mengatur Player.Neutral ke benar akan menyebabkan Player untuk tidak bersama-sama dengan tim, tetapi 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 yang opsional Banyak pengembang memilih untuk menambahkan fitur berikut ke tim dalam kode mereka sendiri.
- Menerapkan periksa untuk tim dalam kode senjata untuk mencegah pembunuhan tim
- Menerapkan pintu atau fitur lain yang hanya tim tertentu yang dapat 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")
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)
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])
Rangkuman
Metode
Properti
Metode
GetTeams
Fungsi GetTeam mengembalikan tabel yang berisi objek Team game.
Catat ini hanya akan mengembalikan objek Tim yang langsung bermasalah dengan Teams layanan. Untuk alasan ini, disarankan pengguna hanya menyertakan objek Team ke layanan Teams dan bukan ke layanan lain 1> Class.Instance|Instances1> (atau kepada satu sama
Memberikan nilai
Sebuah matriks Teams dalam game.
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