Teams
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Der Teams-Service enthält die Team Objekte eines Spiels. Team Objekte müssen dem Teams-Service zugewiesen werden.
Teams bieten eine Reihe von Funktionen, die für Entwickler nützlich sind.Diese können grob in Funktionen unterteilt werden, die aus der Schachtel funktionieren und Funktionen, die Entwickler in ihr Spiel programmieren können.
Integriertes Teamverhalten Die folgende Funktionalität von Teams existiert standardmäßig und erfordert nicht, dass der Entwickler ein benutzerdefiniertes Verhalten programmiert.
- Wenn ein Teil eines Teams, der Name über dem Charakter eines Spieler:inModel wird farbig, um die Team.TeamColor
- Das Ändern von wird dazu führen, dass sich der Wechsel zum Team mit der entsprechenden erfolgt
- Wenn der Standard-Spielerliste verwendet wird, werden Benutzer in Gruppen zusammengefasst und von dem Team angezeigt
- Die Einstellung Player.Neutral auf wahr wird dazu führen, dass die Player mit dem Team getrennt wird, aber nicht Player.Team oder Player.TeamColor geändert wird
- Wenn sich ein Player einem Spiel anschließt, werden sie dem Team zugewiesen, das mit Team.AutoAssignable auf Wahr gesetzt wurde, das die wenigsten Spieler hat.Wenn keine automatisch zuzuweisende Team verfügbar ist, wird Player.Neutral auf wahr gesetzt
- Wenn SpawnLocation.Neutral auf false gesetzt ist, können nur Spieler, deren Player.TeamColor Matches SpawnLocation.TeamColor sind, auf dieser SpawnLocation spawnen
- Wenn SpawnLocation.AllowTeamChangeOnTouch auf wahr gesetzt wird, ändert sich das Player.TeamColor eines Spieler:inzu SpawnLocation.TeamColor, wenn sein Charakter das SpawnLocation berührt
Optionales erweitertes Teamverhalten Viele Entwickler wählten, die folgenden Funktionen zu Teams in ihrem eigenen Codeshinzuzufügen.
- Implementiere Überprüfungen für Team im Waffencode, um Teammorde zu verhindern
- Implementiere Türen oder andere Funktionen, die nur bestimmte Teams nutzen können
- Teams periodisch neu zuweisen, um Kontostandzu gewährleisten
Code-Beispiele
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])
Zusammenfassung
Methoden
Eigenschaften
Methoden
GetTeams
Die Funktion GetTeam gibt eine Tabelle zurück, die die Team Objekte des Spiels enthält.
Beachten Sie, dass dies nur Team-Objekte zurückgibt, die direkt mit dem Teams Service verbunden sind.Aus diesem Grund wird empfohlen, dass Entwickler nur Team Objekte an den Teams Dienst übergeben und nicht an andere Instances (oder aneinander).
Rückgaben
Ein Array von Teams im Spiel.
Code-Beispiele
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