GroupService
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
GroupService là một dịch vụ cho phép các nhà phát triển lấy thông tin về một nhóm Roblox từ bên trong một trò chơi.
Các thông tin cơ bản về nhóm, bao gồm tên, miêu tả, chủ sở hữu, vai trò và biểu tượng, có thể được lấy bằng cách sử dụng GroupService:GetGroupInfoAsync() . Danh sách các đồng minh và kẻ thù của một nhóm có thể được
GroupService cũng có thể được sử dụng để lấy một danh sách các nhóm mà một người chơi là thành viên của, bằng cách sử dụng GroupService:GetGroupsAsync() . Ghi chú, các nhà phát triển muốn xác minh nếu một người đang ở trong một nhóm
Dịch vụ này có một số ứng dụng hữu ích, chẳng hạn như xác định nếu một người chơi là một đồng minh hoặc kẻ thù khi tham gia trò chơi.
Mẫu mã
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
Tóm Tắt
Phương Pháp
Điều chỉnh một StandardPages đối tượng bao gồm thông tin về tất cả các đồng minh của nhóm được chỉ định.
Điều chỉnh một StandardPages đối tượng bao gồm thông tin về tất cả kẻ thù của nhóm được chỉ định.
Trả lại một bảng chứa thông tin về nhóm đã được cung cấp.
Trả lại một danh sách các bảng chứa thông tin về tất cả các nhóm mà một người chơi nào đó là thành viên.
Thuộc Tính
Phương Pháp
GetAlliesAsync
Điều chỉnh một StandardPages đối tượng bao gồm thông tin về tất cả các đồng minh của nhóm được chỉ định.
Các trang này không bao gồm một danh sách các ID nhóm nhưng thay vào đó là một danh sách các bảng thông tin nhóm, sao chép hình dạng của những gì được trả lại bởi GroupService:GetGroupInfoAsync() . Hãy xem dưới đây cho cấu trúc của những bảng này.
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}}}
Lưu ý, vì hàm này trả lại một đối tượng StandardPages thay vì một mat阵, các nhà phát triển có thể muốn chuyển nó thành một mat阵 để dễ dàng sử dụng (xem ví dụ).
Hành động này có một loạt các ứng dụng hữu ích, bao gồm việc xác định nếu một người chơi là thành viên của một nhóm đồng minh.
Đối với kẻ thù, hãy sử dụng GroupService:GetEnemiesAsync() .
Tham Số
ID của nhóm.
Lợi Nhuận
Mẫu mã
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
Điều chỉnh một StandardPages đối tượng bao gồm thông tin về tất cả kẻ thù của nhóm được chỉ định.
Các trang này không bao gồm một danh sách các ID nhóm nhưng thay vào đó là một danh sách các bảng thông tin nhóm, sao chép hình dạng của những gì được trả lại bởi GroupService:GetGroupInfoAsync() . Hãy xem dưới đây cho cấu trúc của những bảng này.
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}}}
Lưu ý, vì hàm này trả lại một đối tượng StandardPages thay vì một mat阵, các nhà phát triển có thể muốn chuyển nó thành một mat阵 để dễ dàng sử dụng (xem ví dụ).
Hành động này có một loạt các ứng dụng hữu ích, bao gồm việc xác định nếu một người chơi là thành viên của một nhóm kẻ thù.
Đối với đồng minh, hãy sử dụng GroupService:GetAlliesAsync() .
Tham Số
ID của nhóm.
Lợi Nhuận
Mẫu mã
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
Trả lại một bảng chứa thông tin về nhóm đã được cung cấp.
Bảng trả lại có cùng định dạng như đã trả lại trong GroupService:GetAlliesAsync() và GroupService:GetEnemiesAsync() . Định dạng này có thể được xem thấy dưới đây.
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}}}
Lưu ý, nếu một nhóm không có chủ sở hữu, thì trường Chủ sở hữu sẽ được đặt là nil.
Hành động này có một loạt các ứng dụng hữu ích, bao gồm tải mô tả và logo của một nhóm để hiển thị trong một cơ sở nhóm.
Tham Số
ID nhóm của nhóm.
Lợi Nhuận
Một từ điển thông tin về nhóm.
Mẫu mã
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
Cảnh báo: Thuộc tính IsInClan trong bảng trả về sẽ luôn luôn trả về false và tồn tại cho sự hỗ trợ qua nhiều thế hệ. Cấu hình Clans đã bị sunset từ nền tảng Roblox vào năm 2016.
Hàm này trả lại một danh sách các bảng chứa thông tin về tất cả các nhóm mà một Player nào đó là thành viên.
Danh sách đã trả lại sẽ bao gồm một hàng cho mỗi nhóm mà người chơi là thành viên. Các hàng này là các bảng với các trường sau đây.
<tbody><tr><td><b>Tên</b></td><td>Tên nhóm</td></tr><tr><td><b>Id</b></td><td>ID nhóm</td></tr><tr><td><b>EmblemUrl</b></td><td>Một liên kết URL tới bản xem trước nhóm (ví dụ: http://www.roblox.com/asset/?id=276165514)</td></tr><tr><td><b>EmblemId</b></td><td>AssetId của biểu tượng, tương tự như được sử dụng trong EmblemUrl</td></tr><tr><td><b>Hạng</b></td><td>Nhận dạng xếp hạng mà người chơi có (ví dụ: 255 cho chủ sở hữu)</td></tr><tr><td><b>Vai trò</b></td><td>Tên của các cấp nhóm của người chơi (ví dụ: Chủ nhóm)</td></tr><tr><td><b>Là chính xác hơn</b></td><td>Một biểu tượngBoolean cho biết nếu đây là nhóm chính của người chơi</td></tr><tr><td><b>IsInClan</b></td><td>Một biểu tượng boolean cho biết nếu người chơi nằm trong clan này</td></tr></tbody>
Tên | Mô tả |
---|
Lưu ý không giống như GroupService:GetAlliesAsync() và GroupService:GetEnemiesAsync() , GetGroupsAsync trả lại một bảng thay vì một StandardPages đối tượng.
Tham Số
Class.Player.UserId của người dùng.
Lợi Nhuận
Mẫu mã
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