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 Equipos almacena los objetos Team de un juego. Los objetos Team deben estar asociados al servicio Equipos.
Las organizaciones ofrecen una gama de características útiles para los desarrolladores. Estas se pueden dividir en funciones que funcionan fuera de la caja y funciones que los desarrolladores pueden programar en su juego.
Comportamiento del equipo incorporado La siguiente funcionalidad de los Equipos existe por defecto y no requiere que el desarrollador programar ningún comportamiento personalizado.
- Cuando sea parte de un equipo, el nombre sobre el personaje de un jugador Model será de color al Team.TeamColor
- Cambiar Player.TeamColor causará que Player.Team cambie a la Equipa con el color de Team.TeamColor correspondiente.
- Cuando se utilice la lista de jugadores predeterminados, los usuarios se agruparán y mostrarán por equipo
- Establecer Player.Neutral a true hará que el Player esté desasociado con el equipo, pero no cambiará Player.Team o 1> Class.Player.TeamColor1>
- Cuando un Class.Player se una a un juego, se asignarán al equipo con Class.Team.AutoAssignable definido como cierto que tiene los jugadores más pocos. Si no hay un equipo de autoasignación disponible, Class.Player.Neutral se asignará como cierto
- Cuando SpawnLocation.Neutral está configurado como falso, solo los jugadores cuyo Player.TeamColor coincida con SpawnLocation.TeamColor pueden generarse en ese 1> Class.SpawnLocation1>
- Cuando SpawnLocation.AllowTeamChangeOnTouch está configurado como verdadero, el color Player.TeamColor de un jugador cambiará a SpawnLocation.TeamColor cuando su personaje toque el 1> Class.SpawnLocation1>
Comportamiento de equipo extendido opcional Muchos desarrolladores eligieron agregar las siguientes características a los equipos en su propio código.
- Implica verificaciones para el equipo en el código de armas para prevenir la muerte del equipo
- Implica puertas o otras características que solo ciertos equipos pueden usar
- Asigna periódicamente equipos para mantener el saldodel equipo
Muestras de código
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])
Resumen
Métodos
Devuelve una tabla que contiene los objetos de clase del juego. Solo devolverá objetos de clase que estén relacionados con el servicio Team.
Propiedades
Métodos
GetTeams
La función juegoTeam 对象的表。
Tenga en cuenta que esto solo devolverá objetos de equipo que estén directamente vinculados al servicio Teams . Por esta razón, se recomienda que los desarrolladores solo vinculen objetos de equipo Team al servicio Teams y no a otros 1> Class.Instance|Instances1> (o a sí mismos).
Devuelve
Un arreglo de Teams en el juego.
Muestras de código
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