Teams
*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.
Dịch vụ Đội Team đựng Team đối tượng. Class.Team đối tượng phải là con của dịch vụ Teams.
Các tính năng cung cấp một loạt các tính năng hữu ích cho các nhà phát triển. Chúng có thể được chia thành các tính năng hoạt động ngoài hộp và các tính năng mà 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 Theo mặc định, các chức năng sau đây của Đội 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 nhóm và hiển thị theo nhóm
- Đặt Player.Neutral để true sẽ khiến Player bị rời khỏi nhóm, nhưng 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 nhóm mở rộng tùy chọn Nhiều nhà phát triển đã chọn thêm các tính năng sau đây cho các đội trong mã của họ.
- Thực hiện kiểm tra cho đội trong mã vũ khí để ngăn chặn sự giết của đội
- Thực hiện cửa hoặc các tính năng khác mà chỉ một số đội có thể sử dụ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")
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])
Tóm Tắt
Phương Pháp
Thuộc Tính
Phương Pháp
GetTeams
Hàm GetTeam trả về một bảng chứa các đối tượng Team của trò chơi.
Ghi chú này chỉ được trả về các đối tượng đội trực tiếp là con của dịch vụ Teams. Vì lý do này, nó được khuyến nghị rằng các đối tượng đội được đặt trên dịch vụ Team
Lợi Nhuận
Một dàn Teams trong trò chơi.
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