Teams

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet

Takımlar hizmeti bir oyunun Team nesnelerini tutar. Team nesneleri Teams hizmetine ebeveyn olmalıdır.

Takımlar, geliştiricilere yararlı olan bir dizi özellik sunar. Bu, çıkış kutusundan çalışan özellikler ve geliştiricilerin oyunlarına programlayabileceği özellikler olarak genişletilebilir.

Yerleşik takım davranışı Takımların şu andaki davranışı varsayılır ve geliştiricinin herhangi bir özel davranışı programlaması gerekmez.

  • Bir Takım'ın bir parçası, bir oyuncunun karakterinin üzerindeki isim Model ile renklenir.
  • Değiştirme Class.Player.TeamColor``Class.Player.Team anahtarını Team.TeamColor ile takas edecek
  • Varsayılan oyuncu listesini kullanırken kullanıcılar takım tarafından gruplandırılır ve görüntülenir
  • Açık Player.Neutral ile yapılandırmak Player ile takımın etkisizleşmesine neden olacak, ancak Player.Team veya 1> Class.Player.TeamColor1> değiştirmez
  • Bir Player bir oyuna katıldığında, bir takıma Team.AutoAssignable ile ayarlanmış olan iletişim kurulacaktır. Eğer bir takım kullanılamıyorsa, Player.Neutral ile ayarlanacaktır.
  • Class.SpawnLocation.Neutral doğru olarak ayarlandığında, sadece Player.TeamColor ile eşleşen oyuncular o SpawnLocation.TeamColor üzerinde oluşturulabilir.
  • Class.SpawnLocation.AllowTeamChangeOnTouch Class.Player.TeamColor``Class.SpawnLocation.TeamColor 1>Class.SpawnLocation.TeamColor1> 4>Class.SpawnLocation.AllowPlayerChange4> 7>Class.SpawnLocation.AllowPlayerChange7> 0>Class.SpawnLocation.AllowPlayerChange0> 3>Class.SpawnLocation.AllowPlayerChange3> 6>Class.SpawnLocation

Ekstra uzun takım davranışını opcional olarak genişlet Birçok geliştirici kendi kodlarındaki takımlara aşağıdaki özellikleri eklemek için seçti.

  • Takım öldürmeyi önlemek için silah kodunda kontrolleri uygula
  • Sadece belirli takımların kullanabileceği kapıları veya diğer özellikleri uygulayın
  • Takım dengelemesini korumak için takımları periyodik olarak yeniden atayın

Kod Örnekleri

Simple Team Rebalance

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)
Team Only Door

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)
Team Kill Check

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])

Özellikler

Yöntemler

GetTeams

Instances

GetTeam işlevi oyunun Team nesnelerini içeren bir tabloyu döndürür.

Not Bu, sadece Teams hizmetine doğrudan ebeveyn olan Takım nesneleri içecek. Bu nedenle, sadece geliştiricilerin Team nesneleri hizmetine ebeveyn olmalarını önerir. Diğer Teams (ya da diğer) olmayanlar için.


Dönüşler

Instances

oyunTeams bir matrisi.

Kod Örnekleri

Teams GetTeams

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

Etkinlikler