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 d'équipes contient les objets Team d'un jeu. Les objets Team doivent être parentés au service d'é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 les 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é.
- Lorsqu'une partie d'une équipe, le nom au-dessus du personnage d'un joueur Model sera coloré en vert Team.TeamColor
- Changer Player.TeamColor provoquera Player.Team basculer sur l'équipe avec le correspondant Team.TeamColor
- Lors de l'utilisation de la liste de joueurs par défaut, les utilisateurs seront groupés et affichés par équipe
- Définir Player.Neutral à vrai entraînera la désociation de Player avec l'équipe, mais ne changera pas Player.Team ou 1> Class.Player.TeamColor1>
- Lorsqu'un Player rejoint un jeu, il sera attribué à l'équipe avec Team.AutoAssignable défini sur vrai qui a le moins de joueurs. Si aucune équipe auto attribuée n'est disponible, Player.Neutral sera défini sur vrai
- Lorsque SpawnLocation.Neutral est réglé sur false, seuls les joueurs dont le Player.TeamColor correspond à SpawnLocation.TeamColor peuvent générer sur cet 1> Class.SpawnLocation1>
- Lorsque SpawnLocation.AllowTeamChangeOnTouch est réglé sur vrai, le Player.TeamColor d'un joueur sera modifié en SpawnLocation.TeamColor lorsque son personnage touche le 1> Class.SpawnLocation1>
Comportement d'équipe étendu optionnel Beaucoup de développeurs ont choisi d'ajouter les fonctionnalités suivantes aux équipes dans leur propre code.
- Immentez des vérifications pour l'équipe dans le code d'arme pour empêcher l'équipe de tuer
- Immentez des portes ou d'autres fonctionnalités que seuls certains équipes peuvent utiliser
- Réassigner périodiquement les équipes pour maintenir l'soldede l'équipe
Échantillons de code
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])
Résumé
Méthodes
Propriétés
Méthodes
GetTeams
La fonction GetTeam renvoie une table contenant les objets Team du jeu.
Notez que ceci ne retournera que des 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 d'objets au service Teams et non pas à d'autres 1> Class.Instance|Instances1> (ou à l'un l'autre).
Retours
Un tableau de Teams dans le jeu.
Échantillons de code
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