Team

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Klasa Class.Team reprezentuje frakcję w Roblox miejsce. Jedyne ważne źródło rodzicielskie dla Zespołu jest w usłudze Team. Zespoły oferują zbiór funkcji, które są przydatne dla rozwiniętych programistów, którzy mogą być podzieleni na dwa grupy:

  • Funkcje, które działają "za granicą skrzynki"
  • Umożliwia programistom programowanie własnej gry.

Zachowanie zespołu zbudowane Poniższa funkcjonalność Teams istnieje domyślnie i nie wymaga programisty, aby programować jakiekolwiek niestandardowe zachowanie.

Opcjonalne zachowania zespołu rozszerzonego Wiele programistów wybrało dodanie następujących funkcji do zespołów w ich własnym kodzie.

  • Wprowadź czynniki kontrolne w kodzie broni, aby zapobiec przyjaznemu ogniu.
  • Wprowadź czynniki sprawdzające w drzwiach lub innych funkcjach, które umożliwiają tylko pewnym zespołom używanie ich
  • Okresowo przypisuj zespołom nowe nazwy, aby utrzymać równowagę zespołu

Przykłady kodu

Simple Team Rebalance

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)
Team Kill Check

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])
Team Only Door

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)

Podsumowanie

Właściwości

  • Odczyt równoległy

    Ta właściwość określa, czy Players zostanie automatycznie postawiony na Team przy dołączeniu. Jeśli wiele zespołów ma tę właściwość ustawioną na prawdę, Roblox będzie próbował nawet zespołów, gdy Players zostanie dodany.

  • Odczyt równoległy

    Ten właściwość ustawia kolor Team . Określa właściwość Player.TeamColor graczy, którzy są członkiem zespołu. Również określa kolor wyświetlany na liście graczy i ponad głowami graczy.

Metody

  • GetPlayers():Instances
    Zapis równoległy

    Wyświetla listę Players, którzy są przypisani do Team. A Player jest uważany za przypisany, jeśli jego właściwość 2>Class.Player.Team2> jest równa 5>Class.Team5> i 8>Class.Player.Neutral8>.

Zdarzenia

  • Występuje, gdy Player jest przypisany do Team. Gracz jest uważany za przypisany, jeśli jego właściwość Player.Team jest równa wartości 1> Class.Team1> i 4> Class.Player.Neutral4> jest fałszywy.

  • Występuje za każdym razem, gdy Player jest usunięty z Team. To może być spowodowane przez to, że Player opuścił gra, 1> Class.Player.Neutral1> ustawiony na prawdę lub że 4> Class.Player4> dołączył do innej drużyny.

Właściwości

AutoAssignable

Odczyt równoległy

Ta właściwość określa, czy Players zostanie automatycznie postawiony na Team przy dołączeniu. Jeśli wiele zespołów ma tę właściwość ustawioną na prawdę, Roblox będzie próbował nawet zespołów, gdy Players zostanie dodany.

Gdy Player dołączy do gry, zostanie przypisany do Team z ustawieniem Team.AutoAssignable na prawdziwy, który ma najmniej graczy. Jeśli takiej drużyny nie jest dostępnej, ustawienie 1> Class.Player.Neutral1> zostanie ustawione na prawdziwy.

Zapisz to, gdy używasz tej właściwości, pomoże to nawet zespołom, gdy gracze zostaną dodani, nie zrobi nic, gdy gracze zostaną usunięci. Z tego powodu rozwój może chcieć wdrożyć własny system balansowania zespołu.

Przykłady kodu

Simple Team Rebalance

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

Odczyt równoległy

Ten właściwość ustawia kolor z Team . Określa właściwość Player.TeamColor dla graczy, którzy są członkiem zespołu.

Wiele funkcji zespołu Roblox'a opartych jest na kolorze zespołu, a nie na imieniu lub obiekcie. Na przykład, SpawnLocations można przypisać zespołowi poprzez SpawnLocation.TeamColor. Dlatego wskazane jest, aby rozwójcy zapewnili, że każdy Team ma unikalny kolor

Każdy gracz, który jest częścią zespołu, będzie miał zmienioną kolor imienia na właściwość TeamColor zespołu. Zostaną również umieszczeni pod głównym tytułem zespołu na liście graczy.

Przykłady kodu

Team Only Door

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)

Metody

GetPlayers

Instances
Zapis równoległy

Wyświetla listę Players, którzy są przypisani do Team. A Player jest uważany za przypisany, jeśli jego właściwość 2>Class.Player.Team2> jest równa 5>Class.Team5> i 8>Class.Player.Neutral8>.

Funkcja ta ma wiele potencjalnych zastosowań, w tym liczenie liczby graczy na Team lub dawanie każdemu Player na Team narzędzia 2>Class.Tool2>.


Zwroty

Instances

Materiały Players w Team .

Przykłady kodu

Teams GetTeams

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

Zdarzenia

PlayerAdded

Występuje, gdy Player jest przypisany do Team. Gracz jest uważany za przypisany, jeśli jego właściwość Player.Team jest równa wartości 1> Class.Team1> i 4> Class.Player.Neutral4> jest fałszywy.

Ten wydarzenie jest zespołowy i będzie się tylko działać, gdy Player dołączy do specjalnego Team. dowolna funkcja połączona z tym wydarzeniem będzie przekazywana Player obiekt gracza, który dołączył do zespołu. Na przykład:

Team.PlayerAdded:Connect(function(gracz) print(gracz.Name.." dołączył do zespołu") kończyć)

Parametry

player: Player

The Player which was added.


Przykłady kodu

Simple Team Rebalance

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

Występuje za każdym razem, gdy Player jest usunięty z Team. To może być spowodowane przez to, że Player opuścił gra, 1> Class.Player.Neutral1> ustawiony na prawdę lub że 4> Class.Player4> dołączył do innej drużyny.

Ten wątek jest zespezjalizowany i zostanie wykonany tylko wtedy, gdy Player opuści specjalny Team. Każda funkcja połączona z tym wątkiem zostanie przekazana Player obiekt gracza, który opuścił zespół. Na przykład:

Team.PlayerRemoved:Connect(function(gracz) print(gracz.Name.." opuścił zespół") kończyć)

Parametry

player: Player

Class.Player usunięty.


Przykłady kodu

Simple Team Rebalance

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)