Teams
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Takım hizmeti bir oyunun Team nesnelerini tutar. Team nesneler Takım hizmetine ebeveyn olmalıdır.
Takımlar geliştiricilere yararlı bir dizi özellik sunar.Bunlar geniş olarak kutudan çıkan özelliklere ve özellik geliştiricilerinin oyunlarına programlayabilecekleri özelliklere bölünebilir.
Yerleşik takım davranışı Takımların aşağıdaki işlevleri varsayılan olarak mevcuttur ve geliştiricinin herhangi bir özel davranışı programlamasını gerektirmez.
- Bir takımın parçası olduğunda, oyuncunun karakterinin üzerindeki isim Model renklendirilecek Team.TeamColor
- Varsayılan oyuncu listesini kullanırken kullanıcılar takım tarafından gruplandırılacak ve gösterilecektir
- Ayarlar Player.Neutral gerçeğe ayarlanırsa, Player ekibinle bağlantı kesilecek, ancak Player.Team veya Player.TeamColor değiştirilmeyecek
- Bir Player bir oyuna katıldığında, en az oyuncu sayısına sahip takıma Team.AutoAssignable ayarlanarak atanacaklar.Otomatik atanabilir bir takım mevcut değilse, Player.Neutral doğru olarak ayarlanacaktır
- When false olarak ayarlanırsa, yalnızca eşleşen oyuncular bu üzerinde ortaya çıkabilir
- When SpawnLocation.AllowTeamChangeOnTouch true olarak ayarlanırsa, bir oyuncunun Player.TeamColor 'si karakterleri SpawnLocation.TeamColor 'a dokunduğunda değişecektir, çünkü SpawnLocation
Opsiyonel genişletilmiş takım davranışı Birçok geliştirici, kendi kodlarındaki takımlara aşağıdaki özellikleri eklemek istedi.
- Takımın silah kodunda öldürülmesini engellemek için takım kontrollerini uygulayın
- Sadece belirli takımların kullanabileceği kapılar veya diğer özellikleri uygulayın
- Takım bakiyekorumak için periyodik olarak takımları yeniden atayın
Kod Örnekleri
This code sample includes a simple example of how to re-balance teams. When Team.AutoAssignable is set to true players will be added to Teams in a balanced fashion. However as Players leave the game this can lead to unbalanced teams as players are not reallocated. This code keeps track of the number of players in each team and, when players leave will check to see if the teams need re-balancing.
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)
The following code sample will create a door in the Workspace that can only be walked through by Players on the Bright red team.
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)
This code sample includes a quick function that can be added to weapons in a place to prevent them from team killing. It will return false when the two players are on different teams or if either of them is neutral.
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])
Özet
Özellikler
Yöntemler
oyunnesnelerini içeren bir tablo döndürür. Sadece hizmete bağlı nesneleri döndürecektir.
Özellikler
Yöntemler
GetTeams
GetTeam işlevi, oyunun Team nesnelerini içeren bir tablo döndürür.
Not bu sadece doğrudan Teams hizmetine bağlı olan Takım nesnelerini geri verecektir.Bu nedenle geliştiricilere sadece Team hizmetine ebeveyn Teams nesneleri önerilir ve diğer Instances (veya birbirine) öyle değil.
Dönüşler
oyunbir Teams dizi.
Kod Örnekleri
The example below prints the number of players on each Team.
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