Team

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Die Team -Klasse stellt eine Fraktion in einem Roblox-Ort dar. Der einzige gültige Elternteil für ein Team ist in der Teams -Dienst. Teams bieten eine Reihe von Funktionen, die nützlich sind für Entwickler, die in zwei groben Gruppen unterteilt werden können:

  • Funktionen, die 'out of the Auswahlbox' funktionieren
  • Entwickler können in ihrem Spiel programmieren.

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 auf das Team mit der entsprechenden Team.TeamColor wechseln wird.
  • Wenn Benutzer die Standard-Spielerliste verwenden, werden sie zusammen als Team dargestellt
  • Das Festlegen von Player.Neutral auf true wird das Player dazu bringen, mit dem Team nicht mehr verbunden zu sein, aber es wird nicht ändern 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 Teamverhaltensmechanismen Viele Entwickler haben sich entschieden, die folgenden Funktionen in ihrem eigenen Codeszu hinzuzufügen.

  • Bringen Sie Checks in Waffencode ein, um freundliches initiierenzu verhindern.
  • Stellen Sie Checks in Türen oder anderen Funktionen um, die nur bestimmten Teams erlauben, sie zu verwenden
  • Team-Verteilerung periodisch erneut, um Team-Haushalt Kontostand

Code-Beispiele

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

Zusammenfassung

Eigenschaften

  • Parallel lesen

    Dieses Eigenschaft bestimmt, ob Players automatisch auf das Team platziert wird, wenn sie beitreten. Wenn mehrere Teams dieses Eigenschaft auf "Wahr" setzen, versucht Roblox, sogar die Teams auszuwählen, wenn Players hinzugefügt werden.

  • Parallel lesen

    Dieses Eigenschaften bestimmt die Farbe des Team . Bestimmt die Farbe Player.TeamColor von Spielern, die ein Mitglied des Teams sind. Bestimmt auch die Farbe, die auf der Spielerliste und über dem Kopf des Spieler:inangezeigt wird.

Methoden

  • GetPlayers():Instances
    Parallel schreiben

    Gibt eine Liste von Players zurück, die an den Team zugewiesen sind. Ein Player wird als zugewiesen betrachtet, wenn seine 1> Class.Player.Team1> -Eigenschaft mit der 4> Class.Team4> und 7> Class.Player.Neutral

Ereignisse

  • Feuert, wenn ein Player an den Team zugewiesen wird. Ein Spieler wird als zugewiesen angesehen, wenn seine Player.Team -Eigenschaft mit der 1> Class.Team1> -Eigenschaft und 4> Class.Player.Neutral4> -Eigenschaft falsch ist.

  • Feuert, wenn ein Player aus einem Team entfernt wird. Dies kann auf die Tatsache zurückzuführen sein, dass der Player das Spiel verlässt, 1> Class.Player.Neutral1> auf wahr gesetzt ist oder der 4> Class.Player4> einem anderen Team beitritt.

Eigenschaften

AutoAssignable

Parallel lesen

Dieses Eigenschaft bestimmt, ob Players automatisch auf das Team platziert wird, wenn sie beitreten. Wenn mehrere Teams dieses Eigenschaft auf "Wahr" setzen, versucht Roblox, sogar die Teams auszuwählen, wenn Players hinzugefügt werden.

Wenn ein Player einem Spiel beitritt, wird er zugewiesen zum Team mit Team.AutoAssignable auf true, das die wenigsten Spieler hat. Wenn kein solches Team verfügbar ist, wird 1>Class.Player1> auf true gesetzt.

Beachten Sie, während Sie dieses Eigenschaft verwenden, wird den Teams helfen, wenn Spieler hinzugefügt werden, wird nichts tun, wenn Spieler entfernt werden. Aus diesem Grund können Entwickler ihr eigenes Team-Ausgleichssystem implementieren.

Code-Beispiele

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)

TeamColor

Parallel lesen

Dieses Eigenschaftsetzt die Farbe des Team. Bestimmt die Player.TeamColor Eigenschaft der Spieler, die ein Mitglied des Teams sind.

Die Standard-Teamfunktionen von Roblox basieren auf der Teamfarbe, nicht auf dem Namen oder dem Objekt. Zum Beispiel kann SpawnLocations an ein Team über SpawnLocation.TeamColor zugewiesen werden. Aus diesem Grund wird empfohlen, dass Entwickler sicherstellen, dass jeder Team eine einzigartige Teamfarbe hat.

Jeder Spieler, der Teil eines Teams ist, wird seine Namensfarbe in die Teamfarbe des Teams geändert. Sie werden auch unter dem Eigenschaftenauf der Spielerliste platziert.

Code-Beispiele

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)

Methoden

GetPlayers

Instances
Parallel schreiben

Gibt eine Liste von Players zurück, die an den Team zugewiesen sind. Ein Player wird als zugewiesen betrachtet, wenn seine 1> Class.Player.Team1> -Eigenschaft mit der 4> Class.Team4> und 7> Class.Player.Neutral

Diese Funktion hat eine Reihe von potenziellen Anwendungen, einschließlich der Zählung der Anzahl der Spieler auf einer Team oder der Verteilung jeder Player auf einem Team an einen 1> Class.Tool1> .


Rückgaben

Instances

Ein Array von Players in der Team .

Code-Beispiele

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

Ereignisse

PlayerAdded

Feuert, wenn ein Player an den Team zugewiesen wird. Ein Spieler wird als zugewiesen angesehen, wenn seine Player.Team -Eigenschaft mit der 1> Class.Team1> -Eigenschaft und 4> Class.Player.Neutral4> -Eigenschaft falsch ist.

Dieses Ereignis ist team spezifisch und wird nur ausgeführt, wenn ein Player die spezifische Team betritt. Jede Funktion, die mit diesem Ereignis verbunden ist, wird das Player -Objekt des Spielers, der dem Team beigetreten ist, übergeben. Zum Beispiel:

Team.PlayerAdded:Connect(function(Spieler:in) print(Spieler:in.Name.." ist dem Team beigetreten") beenden)

Parameter

player: Player

Der Player, der hinzugefügt wurde.


Code-Beispiele

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)

PlayerRemoved

Feuert, wenn ein Player aus einem Team entfernt wird. Dies kann auf die Tatsache zurückzuführen sein, dass der Player das Spiel verlässt, 1> Class.Player.Neutral1> auf wahr gesetzt ist oder der 4> Class.Player4> einem anderen Team beitritt.

Dieses Ereignis ist team spezifisch und wird nur ausgeführt, wenn ein Player das spezifische Team verlässt. Jede Funktion, die mit diesem Ereignis verbunden ist, wird das Player -Objekt des Spielers, der das Team verlassen hat, übergeben. Zum Beispiel:

Team.PlayerRemoved: Connect(Function(Spieler:in) print(Spieler:in.Name.." hat das Team verlassen") beenden)

Parameter

player: Player

Der Player wurde entfernt.


Code-Beispiele

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)