Teams
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Der Teams-Dienst enthält die Team -Objekte eines Spiels. Team -Objekte müssen dem Teams-Dienst zugewiesen sein.
Teams bieten eine Reihe von Funktionen, die für Entwickler nützlich sind. Dies kann breit über Funktionen, die außerhalb der Box laufen, und Funktionen, die Entwickler in ihrem Spiel programmieren können, in Unternehmen aufgeteilt werden.
Eingebaute Team-Verhalten Die folgende Funktionalität von Teams existiert standardmäßig und erfordert nicht, dass der Entwickler ein benutzerdefiniertes Verhalten programmiert.
- Wenn ein Teil eines Teams ist, wird der Name über dem Charakter eines Spieler:inModel mit der Farbe Team.TeamColor gefärbt.
- Ändern von Player.TeamColor verursacht, dass Player.Team mit dem entsprechenden Team.TeamColor auf Team wechselt.
- Wenn Benutzer die Standard-Spielerliste verwenden, werden sie in Teams zusammengeführt und angezeigt
- Das Festlegen von Player.Neutral auf true veranlasst das Player nicht mit dem Team zu verknüpfen, ändert aber nicht Player.Team oder 2>Class.Player.TeamColor2>
- Wenn ein Player einem Spiel beitritt, wird er mit Team.AutoAssignable auf das Team zugewiesen, das die wenigsten Spieler hat. Wenn kein automatisches Team verfügbar ist, wird Player.Neutral auf wahr gesetzt, um das Team zu neutralisieren.
- Wenn SpawnLocation.Neutral auf falsch gesetzt ist, können nur Spieler, deren Class.Player.TeamColor``Class.SpawnLocation.TeamColor übereinstimmt, auf diesem 1> Class.SpawnLocation1> spawnen.
- Wenn SpawnLocation.AllowTeamChangeOnTouch wahr ist, ändert sich die Player.TeamColor eines Spieler:inauf SpawnLocation.TeamColor, wenn sein Charakter den 1> Class.SpawnLocation1> berührt.
Optionale erweiterte Teamverhalten Viele Entwickler haben sich entschieden, die folgenden Funktionen in ihren eigenen Codes zu verwenden.
- implementiere Checks für Team im Waffencode, um Team-Kills zu verhindern
- Stellen Sie Türen oder andere Funktionen ein, die nur bestimmten Teams zur Verfügung stehen
- Team-Verteilerung periodisch erneut, um Team-Haushalt Kontostand
Code-Beispiele
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])
Zusammenfassung
Methoden
Eigenschaften
Methoden
GetTeams
Die GetTeam-Funktion gibt eine Tabelle zurück, die die Team.
Beachten Sie, dass dies nur Team-Objekte zurückgibt, die direkt mit dem Teams -Dienst verbunden sind. Aus diesem Grund wird empfohlen, dass Entwickler nur Team -Objekte mit dem Teams -Dienst und nicht mit anderen 1> Class.Instance|Instanzen1> (oder mit sich selbst) verbunden sind.
Rückgaben
Ein Array von Teams im Spiel.
Code-Beispiele
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