GroupService
*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.
GroupService to usługa, która umożliwia programistom uzyskanie informacji o grupie Roblox z wnętrza gry.
Podstawowe informacje o grupa, w tym jej nazwa, opis, właściciel, role i emblem, można uzyskać używając GroupService:GetGroupInfoAsync() . Listy sprzymierzeń i wrogów grupamożna uzyskać używając GroupService:GetAlliesAsync() i GroupService:GetEnemiesAsync() .
GroupService może być również używany do uzyskania listy członków grupa, do której gracz należy, używając GroupService:GetGroupsAsync() . Uwaga, rozwój chcący zweryfikować, czy gracz jest w grupie, powinien użyć funkcji Player:IsInGroup() zamiast funkcji GroupService:GetGroupsAsync().
Usługa ma wiele przydatnych zastosowań, takich jak wykrywanie, czy gracz jest sojusznikiem czy wrogiem po dołączeniu do gry.
Przykłady kodu
local GroupService = game:GetService("GroupService")
local Players = game:GetService("Players")
-- define group id here
local GROUP_ID = 271454
-- utility function for dealing with pages
local function pagesToArray(pages)
local array = {}
while true do
for _, v in ipairs(pages:GetCurrentPage()) do
table.insert(array, v)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
end
return array
end
-- get lists of allies and enemies
local alliesPages = GroupService:GetAlliesAsync(GROUP_ID)
local enemiesPages = GroupService:GetEnemiesAsync(GROUP_ID)
-- convert to array
local allies = pagesToArray(alliesPages)
local enemies = pagesToArray(enemiesPages)
local function playerAdded(player)
-- check to see if the player is in the group
if player:IsInGroup(GROUP_ID) then
print(player.Name .. " is a member!")
else
local isAlly, isEnemy = false, false
-- check to see if the player is in any ally groups
for _, groupInfo in ipairs(allies) do
local groupId = groupInfo.Id
if player:IsInGroup(groupId) then
isAlly = true
break
end
end
-- check to see if the player is in any enemy groups
for _, groupInfo in ipairs(enemies) do
local groupId = groupInfo.Id
if player:IsInGroup(groupId) then
isEnemy = true
break
end
end
if isAlly and not isEnemy then
print(player.Name .. " is an ally!")
elseif isEnemy and not isAlly then
print(player.Name .. " is an enemy!")
elseif isEnemy and isAlly then
print(player.Name .. " is both an ally and an enemy!")
else
print(player.Name .. " is neither an ally or an enemy!")
end
end
end
-- listen for new players being added
Players.PlayerAdded:Connect(playerAdded)
-- handle players already in game
for _, player in ipairs(Players:GetPlayers()) do
playerAdded(player)
end
Podsumowanie
Metody
Zwraca obiekt StandardPages zawierający informacje o wszystkich członkach grupaokreślonej.
Zwraca obiekt StandardPages zawierający informacje o wszystkich wrogach określonej grupa.
Zwraca tabelę zawierającą informacje o podanej grupa.
Wyświetla listę tabel zawierającą informacje o wszystkich grupach, do których dany gracz jest członkiem.
Właściwości
Metody
GetAlliesAsync
Zwraca obiekt StandardPages zawierający informacje o wszystkich członkach grupaokreślonej.
Ta strona nie zawiera listy ID grup, ale zamiast tego listy tabel informacji grup, odzwierciedlające format zwracanych przez GroupService:GetGroupInfoAsync() . Zobacz poniżej dla struktury tych tabel.
group = {Name = "Knights of the Seventh Sanctum",Id = 377251,Owner = {Name = "Vilicus",Id = 23415609},EmblemUrl = "http://www.roblox.com/asset/?id=60428602",Description = "We fight alongside the balance to make sure no one becomes to powerful",Roles = {[1] = {Name = "Apprentice",Rank = 1},[2] = {Name = "Warrior",Rank = 2},[3] = {Name = "Earth Walker",Rank = 255}}}
Uwaga, ponieważ ta funkcja zwraca obiekt StandardPages a nie maszynę, rozwinięciem może być łatwiejsze używanie go (patrz przykłady).
Funkcja ta ma wiele przydatnych zastosowań, w tym wykrywanie, czy gracz jest członkiem grupasprzymierzonej.
Dla wrogów użyj GroupService:GetEnemiesAsync() .
Parametry
ID grupa.
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local GroupService = game:GetService("GroupService")
local GROUP_ID = 57
-- creates a table of all of the allies of a given group
local allies = {}
local pages = GroupService:GetAlliesAsync(GROUP_ID)
while true do
for _, group in pairs(pages:GetCurrentPage()) do
table.insert(allies, group)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
end
function onPlayerAdded(player)
for _, group in pairs(allies) do
if player:IsInGroup(group.Id) then
print("Player is an ally!")
break
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
-- handle players who joined while the allies list was still loading
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
local GroupService = game:GetService("GroupService")
local Players = game:GetService("Players")
-- define group id here
local GROUP_ID = 271454
-- utility function for dealing with pages
local function pagesToArray(pages)
local array = {}
while true do
for _, v in ipairs(pages:GetCurrentPage()) do
table.insert(array, v)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
end
return array
end
-- get lists of allies and enemies
local alliesPages = GroupService:GetAlliesAsync(GROUP_ID)
local enemiesPages = GroupService:GetEnemiesAsync(GROUP_ID)
-- convert to array
local allies = pagesToArray(alliesPages)
local enemies = pagesToArray(enemiesPages)
local function playerAdded(player)
-- check to see if the player is in the group
if player:IsInGroup(GROUP_ID) then
print(player.Name .. " is a member!")
else
local isAlly, isEnemy = false, false
-- check to see if the player is in any ally groups
for _, groupInfo in ipairs(allies) do
local groupId = groupInfo.Id
if player:IsInGroup(groupId) then
isAlly = true
break
end
end
-- check to see if the player is in any enemy groups
for _, groupInfo in ipairs(enemies) do
local groupId = groupInfo.Id
if player:IsInGroup(groupId) then
isEnemy = true
break
end
end
if isAlly and not isEnemy then
print(player.Name .. " is an ally!")
elseif isEnemy and not isAlly then
print(player.Name .. " is an enemy!")
elseif isEnemy and isAlly then
print(player.Name .. " is both an ally and an enemy!")
else
print(player.Name .. " is neither an ally or an enemy!")
end
end
end
-- listen for new players being added
Players.PlayerAdded:Connect(playerAdded)
-- handle players already in game
for _, player in ipairs(Players:GetPlayers()) do
playerAdded(player)
end
GetEnemiesAsync
Zwraca obiekt StandardPages zawierający informacje o wszystkich wrogach określonej grupa.
Ta strona nie zawiera listy ID grup, ale zamiast tego listy tabel informacji grup, odzwierciedlające format zwracanych przez GroupService:GetGroupInfoAsync() . Zobacz poniżej dla struktury tych tabel.
group = {Name = "Knights of the Seventh Sanctum",Id = 377251,Owner = {Name = "Vilicus",Id = 23415609},EmblemUrl = "http://www.roblox.com/asset/?id=60428602",Description = "We fight alongside the balance to make sure no one becomes to powerful",Roles = {[1] = {Name = "Apprentice",Rank = 1},[2] = {Name = "Warrior",Rank = 2},[3] = {Name = "Earth Walker",Rank = 255}}}
Uwaga, ponieważ ta funkcja zwraca obiekt StandardPages a nie maszynę, rozwinięciem może być łatwiejsze używanie go (patrz przykłady).
Funkcja ta ma wiele przydatnych zastosowań, w tym wykrywanie, czy gracz jest członkiem grupawroga.
Dla sprzymierzeńców użyj GroupService:GetAlliesAsync() .
Parametry
ID grupa.
Zwroty
Przykłady kodu
local Players = game:GetService("Players")
local GroupService = game:GetService("GroupService")
local GROUP_ID = 57
-- creates a list of all of the enemies of a given group
local enemies = {}
local pages = GroupService:GetEnemiesAsync(GROUP_ID)
while true do
for _, group in pairs(pages:GetCurrentPage()) do
table.insert(enemies, group)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
end
function onPlayerAdded(player)
for _, enemyGroup in pairs(enemies) do
if player:IsInGroup(enemyGroup.Id) then
print("Player is an enemy!")
break
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
-- handle players who joined while the enemies list was still loading
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
local GroupService = game:GetService("GroupService")
local Players = game:GetService("Players")
-- define group id here
local GROUP_ID = 271454
-- utility function for dealing with pages
local function pagesToArray(pages)
local array = {}
while true do
for _, v in ipairs(pages:GetCurrentPage()) do
table.insert(array, v)
end
if pages.IsFinished then
break
end
pages:AdvanceToNextPageAsync()
end
return array
end
-- get lists of allies and enemies
local alliesPages = GroupService:GetAlliesAsync(GROUP_ID)
local enemiesPages = GroupService:GetEnemiesAsync(GROUP_ID)
-- convert to array
local allies = pagesToArray(alliesPages)
local enemies = pagesToArray(enemiesPages)
local function playerAdded(player)
-- check to see if the player is in the group
if player:IsInGroup(GROUP_ID) then
print(player.Name .. " is a member!")
else
local isAlly, isEnemy = false, false
-- check to see if the player is in any ally groups
for _, groupInfo in ipairs(allies) do
local groupId = groupInfo.Id
if player:IsInGroup(groupId) then
isAlly = true
break
end
end
-- check to see if the player is in any enemy groups
for _, groupInfo in ipairs(enemies) do
local groupId = groupInfo.Id
if player:IsInGroup(groupId) then
isEnemy = true
break
end
end
if isAlly and not isEnemy then
print(player.Name .. " is an ally!")
elseif isEnemy and not isAlly then
print(player.Name .. " is an enemy!")
elseif isEnemy and isAlly then
print(player.Name .. " is both an ally and an enemy!")
else
print(player.Name .. " is neither an ally or an enemy!")
end
end
end
-- listen for new players being added
Players.PlayerAdded:Connect(playerAdded)
-- handle players already in game
for _, player in ipairs(Players:GetPlayers()) do
playerAdded(player)
end
GetGroupInfoAsync
Zwraca tabelę zawierającą informacje o podanej grupa.
Wyświetlana tabela ma ten sam format co ten zwrócony w GroupService:GetAlliesAsync() i GroupService:GetEnemiesAsync() . Ten format można zobaczyć poniżej.
group = {Name = "Knights of the Seventh Sanctum",Id = 377251,Owner = {Name = "Vilicus",Id = 23415609},EmblemUrl = "http://www.roblox.com/asset/?id=60428602",Description = "We fight alongside the balance to make sure no one becomes to powerful",Roles = {[1] = {Name = "Apprentice",Rank = 1},[2] = {Name = "Warrior",Rank = 2},[3] = {Name = "Earth Walker",Rank = 255}}}
Uwaga, jeśli grupa nie ma właściciela, to pole Właściciel zostanie ustawione na nil.
Funkcja ta ma wiele przydatnych zastosowań, w tym ładowanie najnowszej opisu i logo grupy do wyświetlenia w bazie grupy.
Parametry
ID grupa.
Zwroty
Dizektora informacji o grupa.
Przykłady kodu
local GroupService = game:GetService("GroupService")
local GROUP_ID = 377251
local group = GroupService:GetGroupInfoAsync(GROUP_ID)
print(group.Name .. " has the following roles:")
for _, role in ipairs(group.Roles) do
print("Rank " .. role.Rank .. ": " .. role.Name)
end
local GroupService = game:GetService("GroupService")
local function getEmblemAsync(groupId)
local groupInfo = GroupService:GetGroupInfoAsync(groupId)
return groupInfo.EmblemUrl
end
local part = Instance.new("Part")
part.Anchored = true
part.CanCollide = false
part.Size = Vector3.new(5, 5, 1)
part.Position = Vector3.new(0, 5, 0)
local decal = Instance.new("Decal")
decal.Parent = part
part.Parent = workspace
decal.Texture = getEmblemAsync(377251)
GetGroupsAsync
Ostrzeżenie: Właściwość IsInClan w zwróconej tabeli zawsze zwraca nie i istnieje dla kompatybilności z poprzednimi wersjami. Właściwość klanów została zakończona z platformy Roblox w 2016 r.
Funkcja ta zwraca listę tabel zawierających informacje o wszystkich grupach, do których dany Player jest członkiem.
Lista zwrócona będzie zawierać wpis dla każdej grupy, do której gracz jest członkiem. Te wpisy są tabelami z następującymi polami.
<tbody><tr><td><b>Imię</b></td><td>Nazwa grupa</td></tr><tr><td><b>Idź</b></td><td>ID grupy</td></tr><tr><td><b>Emblem URL</b></td><td>Link do wizualizacji grupa(na przykład: http://www.roblox.com/asset/?id=276165514)</td></tr><tr><td><b>EmblemId</b></td><td>Identyfikator znaku, ten sam, który jest używany w EmblemUrl</td></tr><tr><td><b>Ranga</b></td><td>RankId gracza (na przykład: 255 dla właściciela)</td></tr><tr><td><b>Rola</b></td><td>Nazwa grupy gracza (na przykład: właściciel grupy)</td></tr><tr><td><b>Jest główny</b></td><td>Boolean wskazujący, czy jest to główna grupa gracza</td></tr><tr><td><b>IsInClan</b></td><td>Boolean wskazujący, czy gracz jest w grupatego klanu</td></tr></tbody>
Nazwa | Opis |
---|
Uwaga, w przeciwieństwie do GroupService:GetAlliesAsync() i GroupService:GetEnemiesAsync(), GetGroupsAsync zwraca tabelę, a nie obiekt StandardPages.
Parametry
Class.Player.UserId użytkownika.
Zwroty
Przykłady kodu
local GroupService = game:GetService("GroupService")
local Players = game:GetService("Players")
local function playerAdded(player)
-- load a list of info on all groups the player is a member of
local groups = GroupService:GetGroupsAsync(player.UserId)
for _, groupInfo in pairs(groups) do
for key, value in pairs(groupInfo) do
print(key .. ": " .. tostring(value))
end
print("--")
end
end
Players.PlayerAdded:Connect(playerAdded)
-- go through existing players
for _, player in pairs(Players:GetPlayers()) do
playerAdded(player)
end