Team
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
La classe Team rappresenta una fazione in un PostoRoblox.L'unico genitore valido per una squadra è nel servizio Teams .Le squadre offrono una gamma di funzionalità utili per gli sviluppatori che possono essere divisi in due gruppi grezzi:
- Caratteristiche che funzionano "fuori dalla Quadro di selezione"
- Le funzionalità degli sviluppatori possono programmare nel loro Gioco.
Comportamento della squadra integrata La seguente funzionalità delle squadre esiste per impostazione predefinita e non richiede che il programmatore programmi alcun comportamento personalizzato.
- Quando parte di una squadra, il nome sopra il personaggio di un GiocatoreModel sarà colorato al Team.TeamColor
- Cambiare Player.TeamColor cambierà Player.Team di passare alla squadra con il corrispondente Team.TeamColor
- Quando si utilizza la lista predefinita degli utenti del player, gli utenti saranno gruppati e visualizzati insieme come una team
- Impostare Player.Neutral a vero causerà il distacco del Player dalla team, ma non cambierà Player.Team o Player.TeamColor
- Quando un Player si unisce a una Gioco, verranno assegnati alla squadra con Team.AutoAssignable impostata su vero che ha il minor numero di giocatori.Se non è disponibile alcuna squadra assegnabile automaticamente, Player.Neutral verrà impostata su vero
- Quando SpawnLocation.Neutral è impostato su false, solo i giocatori i cui Player.TeamColor corrisponde a SpawnLocation.TeamColor possono spawnare su quello SpawnLocation
- Quando SpawnLocation.AllowTeamChangeOnTouch è impostato su vero, il Player.TeamColor di un Giocatorecambierà in SpawnLocation.TeamColor quando il loro personaggio tocca il SpawnLocation
Comportamenti estesi della squadra opzionale Molti sviluppatori hanno scelto di aggiungere le seguenti funzionalità alle squadre nel proprio codice.
- Implementa controlli nel codice dell'arma per prevenire il Lanciareamico.
- Implementa controlli nelle porte o in altre funzionalità che consentono l'uso solo a determinate squadre
- Riassegnare periodicamente le squadre per mantenere l'saldodella squadra
Campioni di codice
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)
Sommario
Proprietà
Questa proprietà determina se Players verrà automaticamente posizionata sul Team quando si unisce.Se più squadre hanno questa proprietà impostata su vero, Roblox cercherà di bilanciare le squadre quando Players vengono aggiunte.
Questa proprietà imposta il colore del Team .Determina la proprietà Player.TeamColor dei giocatori che sono membri della team.Determina anche il colore visualizzato nella lista dei giocatori e sopra le teste dei Giocatore.
Metodi
Restituisce una lista di Players che sono assegnati al Team .Un Player è considerato assegnato se la loro proprietà Player.Team è uguale alla Team e Player.Neutral è falsa.
Eventi
Si attiva ogni volta che viene assegnato un Player a Team.Un giocatore è considerato assegnato se la sua proprietà Player.Team è uguale a Team e Player.Neutral è falsa.
Si attiva ogni volta che un Player viene rimosso da un Team .Questo può essere dovuto al fatto che Player lascia il Gioco, Player.Neutral viene impostato su vero o il Player si unisce a un team diverso.
Proprietà
AutoAssignable
Questa proprietà determina se Players verrà automaticamente posizionata sul Team quando si unisce.Se più squadre hanno questa proprietà impostata su vero, Roblox cercherà di bilanciare le squadre quando Players vengono aggiunte.
Quando un Player si unisce a un gioco verranno assegnati al Team con Team.AutoAssignable impostato su vero che ha il minor numero di giocatori.Se non è disponibile alcuna tale squadra, Player.Neutral verrà impostata su vero.
Nota mentre usi questa proprietà aiuterà a bilanciare le squadre quando i giocatori vengono aggiunti, non farà nulla quando i giocatori vengono rimossi.Per questo motivo gli sviluppatori potrebbero voler implementare il proprio sistema di bilanciamento delle squadre.
Campioni di codice
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
Questa proprietà imposta il colore del Team . Determina la proprietà Player.TeamColor dei giocatori che sono membri della team.
Molte funzionalità predefinite del team di Roblox sono basate sul colore del team, piuttosto che sul nome o sull'oggetto.Ad esempio, SpawnLocations può essere assegnato a una squadra attraverso SpawnLocation.TeamColor .Per questo motivo si consiglia agli sviluppatori di garantire che ogni Team abbia un TeamColor unico.
Qualsiasi giocatore che fa parte di una squadra avrà il proprio nome cambiato a TeamColor della squadra.Verranno anche messi sotto la testa del team nella lista dei giocatori.
Campioni di codice
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)
Metodi
GetPlayers
Restituisce una lista di Players che sono assegnati al Team .Un Player è considerato assegnato se la loro proprietà Player.Team è uguale alla Team e Player.Neutral è falsa.
Questa funzione ha una serie di potenziali usi, tra cui il conteggio del numero di giocatori su un Team o dare ogni Player su un Team a Tool .
Restituzioni
Campioni di codice
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
Eventi
PlayerAdded
Si attiva ogni volta che viene assegnato un Player a Team.Un giocatore è considerato assegnato se la sua proprietà Player.Team è uguale a Team e Player.Neutral è falsa.
Questo evento è specifico per il team e verrà attivato solo quando un Player si unisce al specifico Team.Qualunque funzione connessa a questo evento verrà passata l'oggetto Player del giocatore che si è unito alla squadra.Ad esempio:
Team.PlayerAdded:Connect(funzione(Giocatore) print(Giocatore.Name.." si è unito alla team") Terminare)
Parametri
Campioni di codice
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
Si attiva ogni volta che un Player viene rimosso da un Team .Questo può essere dovuto al fatto che Player lascia il Gioco, Player.Neutral viene impostato su vero o il Player si unisce a un team diverso.
Questo evento è specifico per il team e verrà attivato solo quando un Player lascia lo specifico Team.Qualunque funzione connessa a questo evento verrà passata l'oggetto Player del giocatore che ha lasciato la squadra.Ad esempio:
Team.PlayerRemoved:Connect(funzione(Giocatore) print(Giocatore.Name.." ha lasciato la team") Terminare)
Parametri
Campioni di codice
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)