Klasa silnika
Team
*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.
Podsumowanie
Metody
GetPlayers():{Player} |
Zdarzenia
PlayerAdded(player: Player):RBXScriptSignal |
PlayerRemoved(player: Player):RBXScriptSignal |
Przykłady kodu
Proste zrównoważenie zespołu
local Teams = game:GetService("Teams")
-- utwórz dwie drużyny
local redTeam = Instance.new("Team")
redTeam.TeamColor = BrickColor.new("Jasna czerwień")
redTeam.AutoAssignable = true
redTeam.Name = "Czerwona Drużyna"
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.TeamColor = BrickColor.new("Jasny niebieski")
blueTeam.AutoAssignable = true
blueTeam.Name = "Niebieska Drużyna"
blueTeam.Parent = Teams
-- zacznij liczyć liczba graczy w każdej drużynie
local numberRed, numberBlue = 0, 0
local function playerAdded(team)
-- zwiększ licznik drużyny o 1
if team == redTeam then
numberRed = numberRed + 1
elseif team == blueTeam then
numberBlue = numberBlue + 1
end
end
local function playerRemoved(team)
-- zmniejsz licznik drużyny o 1
if team == redTeam then
numberRed = numberRed - 1
elseif team == blueTeam then
numberBlue = numberBlue - 1
end
-- sprawdź, czy drużyny są nierównoważne
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
-- wybierz losowego gracza
local playerList = bigTeam:GetPlayers()
local player = playerList[math.random(1, #playerList)]
-- sprawdź, czy gracz istnieje
if player then
-- zmień drużynę gracza
player.TeamColor = smallTeam.TeamColor
-- odrodź gracza
player:LoadCharacterAsync()
end
end
end
-- nasłuchuj na dodawanie / usuwanie graczy
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)Sprawdzanie Zabijania w Zespole
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])Drzwi tylko dla zespołu
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)Rebalansowanie zespołu z integracją party
local Teams = game:GetService("Teams")
local Players = game:GetService("Players")
local SocialService = game:GetService("SocialService")
local redTeam = Instance.new("Team")
redTeam.Name = "Czerwony Zespół"
redTeam.TeamColor = BrickColor.Red()
redTeam.AutoAssignable = false
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.Name = "Niebieski Zespół"
blueTeam.TeamColor = BrickColor.Blue()
blueTeam.AutoAssignable = false
blueTeam.Parent = Teams
local function assignPlayerToTeam(player)
local partyId = player.PartyId
if partyId == "" then
assignBalancedTeam(player)
return
end
local teams = { redTeam, blueTeam }
local matchingTeam = nil
local partyPlayers = SocialService:GetPlayersByPartyId(partyId)
for _, partyPlayer in partyPlayers do
if partyPlayer ~= player and table.find(teams, partyPlayer.Team) then
matchingTeam = partyPlayer.Team
break
end
end
if matchingTeam then
player.Team = matchingTeam
player.TeamColor = matchingTeam.TeamColor
else
assignBalancedTeam(player)
end
end
function assignBalancedTeam(player)
local redCount = #redTeam:GetPlayers()
local blueCount = #blueTeam:GetPlayers()
local chosenTeam = redCount <= blueCount and redTeam or blueTeam
player.Team = chosenTeam
player.TeamColor = chosenTeam.TeamColor
end
local function groupPlayersByParty()
local seenPartyIds = {}
local groupedPlayers = {}
for _, player in Players:GetPlayers() do
if player.PartyId == "" then
table.insert(groupedPlayers, { player })
elseif not table.find(seenPartyIds, player.PartyId) then
table.insert(seenPartyIds, player.PartyId)
local partyPlayers = SocialService:GetPlayersByPartyId(player.PartyId)
table.insert(groupedPlayers, partyPlayers)
end
end
return groupedPlayers
end
-- Wywołaj tę funkcję, aby zrównoważyć zespoły
local function rebalanceTeams()
local groups = groupPlayersByParty()
table.sort(groups, function(a, b)
return #a > #b
end)
for _, player in Players:GetPlayers() do
player.Team = nil
end
for _, group in groups do
local redCount = #redTeam:GetPlayers()
local blueCount = #blueTeam:GetPlayers()
local bestTeam
if redCount <= blueCount then
bestTeam = redTeam
else
bestTeam = blueTeam
end
for _, player in group do
player.Team = bestTeam
player.TeamColor = bestTeam.TeamColor
end
end
for _, player in Players:GetPlayers() do
player:LoadCharacterAsync()
end
end
Players.PlayerAdded:Connect(function(player)
assignPlayerToTeam(player)
player:LoadCharacterAsync()
player:GetPropertyChangedSignal("PartyId"):Connect(function()
if player.PartyId ~= "" then
assignPlayerToTeam(player)
end
end)
end)Materiały referencyjne dotyczące interfejsów API
Właściwości
AutoAssignable
Przykłady kodu
Proste zrównoważenie zespołu
local Teams = game:GetService("Teams")
-- utwórz dwie drużyny
local redTeam = Instance.new("Team")
redTeam.TeamColor = BrickColor.new("Jasna czerwień")
redTeam.AutoAssignable = true
redTeam.Name = "Czerwona Drużyna"
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.TeamColor = BrickColor.new("Jasny niebieski")
blueTeam.AutoAssignable = true
blueTeam.Name = "Niebieska Drużyna"
blueTeam.Parent = Teams
-- zacznij liczyć liczba graczy w każdej drużynie
local numberRed, numberBlue = 0, 0
local function playerAdded(team)
-- zwiększ licznik drużyny o 1
if team == redTeam then
numberRed = numberRed + 1
elseif team == blueTeam then
numberBlue = numberBlue + 1
end
end
local function playerRemoved(team)
-- zmniejsz licznik drużyny o 1
if team == redTeam then
numberRed = numberRed - 1
elseif team == blueTeam then
numberBlue = numberBlue - 1
end
-- sprawdź, czy drużyny są nierównoważne
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
-- wybierz losowego gracza
local playerList = bigTeam:GetPlayers()
local player = playerList[math.random(1, #playerList)]
-- sprawdź, czy gracz istnieje
if player then
-- zmień drużynę gracza
player.TeamColor = smallTeam.TeamColor
-- odrodź gracza
player:LoadCharacterAsync()
end
end
end
-- nasłuchuj na dodawanie / usuwanie graczy
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)AutoColorCharacters
Score
TeamColor
Przykłady kodu
Drzwi tylko dla zespołu
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
Zdarzenia
PlayerAdded
Parametry
Przykłady kodu
Proste zrównoważenie zespołu
local Teams = game:GetService("Teams")
-- utwórz dwie drużyny
local redTeam = Instance.new("Team")
redTeam.TeamColor = BrickColor.new("Jasna czerwień")
redTeam.AutoAssignable = true
redTeam.Name = "Czerwona Drużyna"
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.TeamColor = BrickColor.new("Jasny niebieski")
blueTeam.AutoAssignable = true
blueTeam.Name = "Niebieska Drużyna"
blueTeam.Parent = Teams
-- zacznij liczyć liczba graczy w każdej drużynie
local numberRed, numberBlue = 0, 0
local function playerAdded(team)
-- zwiększ licznik drużyny o 1
if team == redTeam then
numberRed = numberRed + 1
elseif team == blueTeam then
numberBlue = numberBlue + 1
end
end
local function playerRemoved(team)
-- zmniejsz licznik drużyny o 1
if team == redTeam then
numberRed = numberRed - 1
elseif team == blueTeam then
numberBlue = numberBlue - 1
end
-- sprawdź, czy drużyny są nierównoważne
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
-- wybierz losowego gracza
local playerList = bigTeam:GetPlayers()
local player = playerList[math.random(1, #playerList)]
-- sprawdź, czy gracz istnieje
if player then
-- zmień drużynę gracza
player.TeamColor = smallTeam.TeamColor
-- odrodź gracza
player:LoadCharacterAsync()
end
end
end
-- nasłuchuj na dodawanie / usuwanie graczy
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
Parametry
Przykłady kodu
Proste zrównoważenie zespołu
local Teams = game:GetService("Teams")
-- utwórz dwie drużyny
local redTeam = Instance.new("Team")
redTeam.TeamColor = BrickColor.new("Jasna czerwień")
redTeam.AutoAssignable = true
redTeam.Name = "Czerwona Drużyna"
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.TeamColor = BrickColor.new("Jasny niebieski")
blueTeam.AutoAssignable = true
blueTeam.Name = "Niebieska Drużyna"
blueTeam.Parent = Teams
-- zacznij liczyć liczba graczy w każdej drużynie
local numberRed, numberBlue = 0, 0
local function playerAdded(team)
-- zwiększ licznik drużyny o 1
if team == redTeam then
numberRed = numberRed + 1
elseif team == blueTeam then
numberBlue = numberBlue + 1
end
end
local function playerRemoved(team)
-- zmniejsz licznik drużyny o 1
if team == redTeam then
numberRed = numberRed - 1
elseif team == blueTeam then
numberBlue = numberBlue - 1
end
-- sprawdź, czy drużyny są nierównoważne
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
-- wybierz losowego gracza
local playerList = bigTeam:GetPlayers()
local player = playerList[math.random(1, #playerList)]
-- sprawdź, czy gracz istnieje
if player then
-- zmień drużynę gracza
player.TeamColor = smallTeam.TeamColor
-- odrodź gracza
player:LoadCharacterAsync()
end
end
end
-- nasłuchuj na dodawanie / usuwanie graczy
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)