Team
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Lớp Team đại diện cho một phe trong một địa điểmRoblox. Người cha duy nhất cho một đội là trong dịch vụ Teams. Teams cung cấp một loạt các tính năng hữu ích cho các nhà phát triển có thể được chia thành hai nhóm rau:
- Các tính năng hoạt động ngoài hộp
- Các tính năng mà các nhà phát triển có thể lập trình vào trò chơi của họ.
Hành vi đội tích hợp Các chức năng sau đây của Teams tồn tại bởi mặc định và không yêu cầu nhà phát triển lập trình bất kỳ hành vi tùy chỉnh nào.
- Khi một phần của một đội, tên trên một nhân vật của người chơi sẽ được thay đổi màu sắc thành Model
- Khi sử dụng danh sách người chơi mặc định, người dùng sẽ được phân loại và hiển thị cùng nhau như một nhóm
- Đặt Player.Neutral để true sẽ khiến Player bị rời khỏi nhóm, nhưng nó sẽ không thay đổi Player.Team hoặc 1> Class.Player.TeamColor1>
- Khi một Class.Player tham gia vào một trò chơi, họ sẽ được giao vào đội với Player được đặt trên true có số lượng người chơi ít nhất. Nếu không có đội giao trực tiếp, Team.AutoAssignable sẽ được đặt tr
- Khi SpawnLocation.Neutral được cài đặt sai, chỉ những người chơi có Player.TeamColor đúng với SpawnLocation.TeamColor để có thể xuất hiện trên 1> Class.SpawnLocation1>
- Khi SpawnLocation.AllowTeamChangeOnTouch được cài đặt thành true, một người chơi's Player.TeamColor sẽ thay đổi thành SpawnLocation.TeamColor khi người chơi của họ chạm vào 1> Class.SpawnLocation1>
Hành vi mở rộng đội tùy chọn Nhiều nhà phát triển đã chọn thêm các tính năng sau đây vào các đội trong mã của họ.
- Thực hiện kiểm tra trong mã vũ khí để ngăn chặn lửa thân thiện.
- Thực hiện kiểm tra trong các cửa hoặc các tính năng khác cho phép chỉ một số nhóm có thể sử dụng chúng
- Tái phân bổ thường xuyên các đội để duy trì sự cân số dưcủa đội
Mẫu mã
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)
Tóm Tắt
Thuộc Tính
Điều này xác định liệu Players sẽ được đặt tự động vào Team khi tham gia. Nếu nhiều đội có giá trị này đặt trên true, Roblox sẽ cố gắng thậm chí các đội khi Players được thêm.
Thuộc tính này đặt màu của Team . Định định màu Player.TeamColor của người chơi là thành viên của đội. Cũng xác định màu hiển thị trên danh sách người chơi và trên đầu người chơi.
Phương Pháp
Sự Kiện
Lửa mọi lúc mọi nơi khi một Player được giao cho Team . Một người chơi được xem như đã giao nếu điều kiện Player.Team của họ bằng với 1> Class.Team1> và
Lửa mỗi khi một Class.Player được loại bỏ khỏi một Class.Team . Điều này có thể là do Class.Player rời khỏi trò chơi, Class.Player.Neutral được đặt thành true hoặc Class.Player tham gia một nhóm khác.
Thuộc Tính
AutoAssignable
Điều này xác định liệu Players sẽ được đặt tự động vào Team khi tham gia. Nếu nhiều đội có giá trị này đặt trên true, Roblox sẽ cố gắng thậm chí các đội khi Players được thêm.
Khi một Class.Player tham gia vào một trò chơi, họ sẽ được giao cho Class.Team với Class.Team.AutoAssignable được đặt trên true có số lượng người chơi ít nhất. Nếu không có đội nào khác có sẵn, Class.Player sẽ được đặt tr
Ghi chú khi sử dụng thuộc tính này sẽ giúp đỡ cả các đội khi người chơi được thêm, nó sẽ không làm bất cứ điều gì khi người chơi bị xóa. Vì lý do này, các nhà phát triển có thể muốn tích hợp cân bằng đội của riêng họ.
Mẫu mã
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
Đặt màu của Team . Định nghĩa màu Player.TeamColor của người chơi là thành viên của nhóm.
Rất nhiều chức năng của đội mặc định của Roblox dựa trên màu của đội, chứ không phải tên hoặc mục tiêu. Ví dụ, SpawnLocations có thể được giao cho một đội bằng cách sử dụng Class.S
Bất kỳ người chơi nào cũng là một phần của một đội sẽ có màu tên của họ thay đổi thành màu tên đội của đội. Họ cũng sẽ được đặt dưới dấu hiệu của danh sách người chơi.
Mẫu mã
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)
Phương Pháp
GetPlayers
Trả lại một danh sách các Players được giao cho Team . Một Player được xem như đã giao nếu điều kiện 1> Class.Player.Team1> của họ bằng v
Hành động này có một loạt các lợi dụng tiềm năng, bao gồm đếm số lượng người chơi trên một Team hoặc đưa mọi người Player trên một Team có một 1> Class.Tool1> .
Lợi Nhuận
Mẫu mã
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
Sự Kiện
PlayerAdded
Lửa mọi lúc mọi nơi khi một Player được giao cho Team . Một người chơi được xem như đã giao nếu điều kiện Player.Team của họ bằng với 1> Class.Team1> và
Sự kiện này là của đội và chỉ khi một Player tham gia vào Team cụ thể. Bất kỳ chức năng nào liên quan đến sự kiện này sẽ được truyền cho Player người tham gia vào đội. Ví dụ:
Team.PlayerAdded:Connect(function(người chơi) print(người chơi.Name.." đã tham gia vào đội") kết thúc)
Tham Số
Class.Player đã được thêm vào.
Mẫu mã
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
Lửa mỗi khi một Class.Player được loại bỏ khỏi một Class.Team . Điều này có thể là do Class.Player rời khỏi trò chơi, Class.Player.Neutral được đặt thành true hoặc Class.Player tham gia một nhóm khác.
Sự kiện này là riêng cho đội và chỉ khi một Player rời khỏi Team . Bất kỳ chức năng nào liên quan đến sự kiện này sẽ được truyền cho Player người rời khỏi đội. Ví dụ:
Team.PlayerRemoved: Connect(function(người chơi) print(người chơi.Name.." đã rời khỏi nhóm") kết thúc)
Tham Số
Mẫu mã
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)