Teams
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
El servicio de equipos almacena los objetos de un juego de . Los objetos deben ser padreados al servicio de equipos.
Las equipes ofrecen una serie de funciones útiles para los desarrolladores.Estas se pueden dividir ampliamente en funciones que funcionan fuera de la caja y funciones que los desarrolladores pueden programar en su juego.
Comportamiento de equipo integrado La siguiente funcionalidad de Equipos existe por defecto y no requiere que el desarrollador programe ningún comportamiento personalizado.
- Cuando parte de un equipo, el nombre sobre el personaje de un jugador Model se coloreará al Team.TeamColor
- Cambiar Player.TeamColor causará Player.Team cambiar al equipo con el correspondiente Team.TeamColor
- Al usar la lista de jugadores predeterminada, los usuarios se agruparán y se mostrarán por equipo
- Establecer Player.Neutral a verdad hará que el Player se desasocie con el equipo, pero no cambiará Player.Team o Player.TeamColor
- Cuando un Player se una a un juego, se asignarán al equipo con Team.AutoAssignable establecido en verdad que tenga el menor número de jugadores.Si no hay un equipo asignable automáticamente disponible, Player.Neutral se establecerá en verdadero
- Cuando SpawnLocation.Neutral está configurado como falso, solo los jugadores cuyas coincidencias de Player.TeamColor coincidan con SpawnLocation.TeamColor pueden aparecer en ese SpawnLocation
- Cuando se establece en verdadero, el de un jugador cambiará a cuando su personaje toque el
Comportamiento de equipo extendido opcional Muchos desarrolladores optaron por agregar las siguientes características a los equipos en su propio código.
- Implementa verificaciones para el equipo en el código de armas para prevenir el asesinato del equipo
- Implementa puertas u otras características que solo ciertos equipos pueden usar
- Reasignar periódicamente equipos para mantener el saldode equipos
Muestras de código
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])
Resumen
Métodos
Propiedades
Métodos
GetTeams
La función GetTeam devuelve una tabla que contiene los objetos del juego Team.
Tenga en cuenta que solo devolverá objetos de equipo que estén directamente asociados al servicio Teams.Por esta razón, se recomienda a los desarrolladores solo padres Team objetos al servicio Teams (y no a otros Instances (o a sí mismos).
Devuelve
Un array de Teams en el juego.
Muestras de código
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