Team
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
La classe Team représente une faction dans un emplacementRoblox.Le seul parent valide pour une équipe se trouve dans le service Teams.Les équipes offrent une gamme de fonctionnalités utiles aux développeurs qui peuvent être divisées en deux groupes grossiers :
- Fonctions qui fonctionnent 'en dehors de la boîte de modélisation'
- Les développeurs de fonctionnalités peuvent programmer dans leur jeu.
Comportement d'équipe intégré Les fonctionnalités suivantes des équipes existent par défaut et n'exigent pas que le développeur programme un comportement personnalisé.
- Lorsque partie d'une équipe, le nom au-dessus du personnage d'un joueur Model sera coloré en Team.TeamColor
- Changer Player.TeamColor provoquera Player.Team de passer à l'équipe avec le correspondant Team.TeamColor
- Lors de l'utilisation de la liste de joueurs par défaut, les utilisateurs seront regroupés et affichés ensemble comme une équipe
- Définir Player.Neutral à vrai provoquera la désactivation de Player avec l'équipe, mais cela ne changera pas Player.Team ou Player.TeamColor
- Lorsqu'un Player rejoint une jeu, ils seront attribués à l'équipe avec Team.AutoAssignable défini sur vrai qui a le moins de joueurs.Si aucune équipe attribuable automatiquement n'est disponible, Player.Neutral sera défini sur vrai
- Lorsque est défini sur false, seuls les joueurs dont les matchs correspondent à peuvent apparaître sur ce
- Lorsque SpawnLocation.AllowTeamChangeOnTouch est défini sur true, le Player.TeamColor d'un joueur changera en SpawnLocation.TeamColor lorsque son personnage touchera le SpawnLocation
Comportements d'équipe étendue facultatifs De nombreux développeurs ont choisi d'ajouter les fonctionnalités suivantes aux équipes dans leur propre code.
- Implémentez des vérifications dans le code d'arme pour empêcher le lancer.
- Mettre en œuvre des vérifications dans les portes ou d'autres fonctionnalités qui ne permettent à certaines équipes seulement d'les utiliser
- Réassigner périodiquement des équipes pour maintenir l'soldedes équipes
Échantillons de code
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)
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])
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)
Résumé
Propriétés
Cette propriété détermine si Players sera automatiquement placé sur le Team lors de l'adhésion.Si plusieurs équipes ont cette propriété définie sur vrai, Roblox tentera d'équilibrer les équipes lorsque Players sont ajoutées.
Cette propriété définit la couleur du Team .Détermine la propriété Player.TeamColor des joueurs qui sont membres de l'équipe.Détermine également la couleur affichée dans la liste des joueurs et au-dessus des têtes des joueurs.
Méthodes
Renvoie une liste de Players qui sont attribués au Team.Un Player est considéré comme attribué si sa propriété Player.Team est égale à la propriété Team et que Player.Neutral est faux.
Évènements
Il se déclenche chaque fois qu'un Player est attribué au Team.Un joueur est considéré attribué si sa propriété Player.Team est égale à la propriété Team et que Player.Neutral est fausse.
Il se déclenche chaque fois qu'un Player est supprimé d'un Team .Cela peut être dû au fait que Player quitte le jeu, Player.Neutral est réglé sur vrai ou que Player rejoint une autre équipe.
Propriétés
AutoAssignable
Cette propriété détermine si Players sera automatiquement placé sur le Team lors de l'adhésion.Si plusieurs équipes ont cette propriété définie sur vrai, Roblox tentera d'équilibrer les équipes lorsque Players sont ajoutées.
Lorsqu'un Player rejoint une partie, il sera attribué au Team avec Team.AutoAssignable défini sur vrai qui a le moins de joueurs.Si aucune telle équipe n'est disponible, Player.Neutral sera défini sur vrai.
Notez que l'utilisation de cette propriété aidera à équilibrer les équipes lorsque des joueurs sont ajoutés, mais ne fera rien lorsque des joueurs sont retirés.Pour cette raison, les développeurs peuvent souhaiter mettre en œuvre leur propre système d'équilibrage d'équipe.
Échantillons de code
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)
TeamColor
Cette propriété définit la couleur du Team . Détermine la propriété Player.TeamColor des joueurs qui sont membres de l'équipe.
Beaucoup de fonctionnalités par défaut de l'équipe de Roblox sont basées sur la couleur de l'équipe, plutôt que sur le nom ou l'objet.Par exemple, SpawnLocations peut être attribué à une équipe via SpawnLocation.TeamColor .Pour cette raison, il est recommandé que les développeurs assurent que chaque Team ait une couleur d'équipe unique.
Tout joueur faisant partie d'une équipe verra sa couleur de nom modifiée en fonction de la propriété TeamColor de l'équipe.Ils seront également placés sous la rubrique équipe de la liste des joueurs.
Échantillons de code
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)
Méthodes
GetPlayers
Renvoie une liste de Players qui sont attribués au Team.Un Player est considéré comme attribué si sa propriété Player.Team est égale à la propriété Team et que Player.Neutral est faux.
Cette fonction a un certain nombre d'utilisations potentielles, notamment le comptage du nombre de joueurs sur un Team ou le don de chaque Player sur un Team à un Tool .
Retours
Échantillons de code
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
Évènements
PlayerAdded
Il se déclenche chaque fois qu'un Player est attribué au Team.Un joueur est considéré attribué si sa propriété Player.Team est égale à la propriété Team et que Player.Neutral est fausse.
Cet événement est spécifique à l'équipe et ne se déclenchera que lorsque Player rejoindra le spécifique Team.Toute fonction connectée à cet événement recevra l'objet Player du joueur qui a rejoint l'équipe.Par exemple :
Team.PlayerAdded:Connect(function(joueur) imprimer(joueur.Name.." a rejoint l'équipe") terminer)
Paramètres
Échantillons de code
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)
PlayerRemoved
Il se déclenche chaque fois qu'un Player est supprimé d'un Team .Cela peut être dû au fait que Player quitte le jeu, Player.Neutral est réglé sur vrai ou que Player rejoint une autre équipe.
Cet événement est spécifique à l'équipe et ne se déclenchera que lorsqu'un Player quittera le spécifique Team.Toute fonction connectée à cet événement recevra l'objet Player du joueur qui a quitté l'équipe.Par exemple :
Team.PlayerRemoved:Connect(function(joueur) imprimer(joueur.Name.." a quitté l'équipe") terminer)
Paramètres
Échantillons de code
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)