Teams
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Le service des équipes contient les objets d'un jeu Team. Les objets Team doivent être parentés au service des équipes.
Les équipes offrent une gamme de fonctionnalités utiles aux développeurs.Ces derniers peuvent être divisés en fonctionnalités qui fonctionnent hors de la boîte et en fonctionnalités que les développeurs peuvent programmer dans leur jeu.
Comportement d'équipe intégré La fonctionnalité suivante des équipes existe par défaut et n'exige 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 un changement de Player.Team d'é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 par l'équipe
- Définir Player.Neutral à vrai provoquera la désactivation de Player avec l'équipe, mais 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
Comportement d'équipe étendu facultatif Beaucoup de développeurs ont choisi d'ajouter les fonctionnalités suivantes aux équipes dans leur propre code.
- Implémenter des vérifications pour l'équipe dans le code d'armes pour empêcher l'équipe de tuer
- Implémenter des portes ou d'autres fonctionnalités que seules certaines équipes peuvent 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)
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])
Résumé
Méthodes
Propriétés
Méthodes
GetTeams
La fonction GetTeam renvoie une table contenant les objets du jeu Team.
Notez que cela ne retournera que les objets d'équipe qui sont directement parentés au service Teams.Pour cette raison, il est recommandé aux développeurs de ne parent que Team objets au service Teams (et non à d'autres Instances (ou les uns aux autres).
Retours
Un ensemble de Teams dans le jeu.
É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