SocialService

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet
Çoğaltılmamış

Sosyal Hizmet Roblox platformunda yapılan ilişkilere etki eden sosyal işlevleri kolaylaştırırBirincil kullanımı, oyunculara davet istekleri göndermelerine izin verenClass.SocialService:PromptGameInvite()|PromptGameInvite()``Class.SocialService:PromptPhoneBook()|PromptPhoneBook() telefon kitabını göstermektir, böylece oyuncular iletişim aracılığıyla arkadaşlarına davet istekleri gönderebilirler.Bu tür istekler yapıldığında sinyalleri kullanabilirsiniz.

Özet

Yöntemler

Etkinlikler

Geri Aramalar

Özellikler

Yöntemler

GetPlayersByPartyId

Instances

Mevcut olarak bağlı tüm Player nesnelerin tablosunu döndürür, whose Player.PartyId özelliği sağlanan partyId özelliğe uyar.Bu yöntem, Players:GetPlayers() benzer şekilde davranır, ancak sonuçları sadece belirtilen partiye ait oyuncuları içerecek şekilde filtreler.

Bu hizmetin Roblox Studio'da oynatma testi sırasında çalışmadığını unutmayın; deneyimin yönlerini test etmek için deneyimi yayınlamalı ve Roblox uygulamasında oynamalısınız.

Parametreler

partyId: string
Varsayılan değer: ""

Dönüşler

Instances

Geçerli Player özelliklerine sahip bir tablo ile Player.PartyId öznitelikleri eşleşen nesnelerin tablosu partyId.

Kod Örnekleri

The following example listens for when a player joins the experience. If the player is part of a party, it uses SocialService:GetPlayersByPartyId() to retrieve all players in the same party who are currently connected to the server. It then outputs the name of each party member.

SocialService:GetPlayersByPartyId()

local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local partyId = player.PartyId
if partyId ~= "" then
local partyPlayers: { Player } = SocialService:GetPlayersByPartyId(partyId)
for _, partyMember in partyPlayers do
print("Party Member: " .. partyMember.Name)
end
else
warn("Player is not in a party")
end
end)

This code sample demonstrates how to assign players to Teams based on their Player.PartyId using the SocialService:GetPlayersByPartyId() method. When a player joins the experience, the script checks whether they're part of a party. If so, it attempts to assign them to the same team as other party members. If no match is found or the player isn't in a party, they're placed on the team with fewer members to maintain balance.

Team Rebalance with Party Integration

local Teams = game:GetService("Teams")
local Players = game:GetService("Players")
local SocialService = game:GetService("SocialService")
local redTeam = Instance.new("Team")
redTeam.Name = "Red Team"
redTeam.TeamColor = BrickColor.Red()
redTeam.AutoAssignable = false
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.Name = "Blue Team"
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
-- Call this function to rebalance teams
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:LoadCharacter()
end
end
Players.PlayerAdded:Connect(function(player)
assignPlayerToTeam(player)
player:LoadCharacter()
player:GetPropertyChangedSignal("PartyId"):Connect(function()
if player.PartyId ~= "" then
assignPlayerToTeam(player)
end
end)
end)

HideSelfView

()

Çağıran oyuncunun kendi görüşünü gizler. Eğer bu yöntem kendi görüşü zaten gizlenmişken çağrılırsa, hiçbir şey yapmaz.


Dönüşler

()

PromptGameInvite

()

PromptGameInvite() yerel oyuncuya mevcut deneyime arkadaşlarını davet etmeleri için bir davet mesajı görüntüler.Bu yöntemi çağırmadan önce, oyuncunun bir davet gönderebileceğini belirlemek için CanSendGameInviteAsync() kullanmalısınız, çünkü bu yetenek platform veya oyuncu bağlı olarak değişebilir.

Davet isteklerinin uygulanması, özelleştirilmesi ve bildirimleri ve başlatma verilerinin kullanılması hakkında daha fazla ayrıntı için Oyuncu Davet İstekleri bakınız.

Parametreler

player: Instance

Davet penceresiyle istemek için Player .

Varsayılan değer: ""
experienceInviteOptions: Instance

Seçeneğe bağlı ExperienceInviteOptions nesne, istemciyi özelleştirmek için.

Varsayılan değer: "nil"

Dönüşler

()

Kod Örnekleri

The following code sample uses CanSendGameInviteAsync() to confirm whether the local Player can send an invite. If true, it then prompts the invite using PromptGameInvite().

Sending an Invite

local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Function to check whether the player can send an invite
local function canSendGameInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendGameInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canInvite = canSendGameInvite(player)
if canInvite then
SocialService:PromptGameInvite(player)
end

PromptPhoneBook

()

Verilen Player telefon rehberi ile sorar.Oyuncu birisini aramayı seçerse, CallInviteStateChanged etkinliği ateşlenir.Telefon rehberini görme yeteneğinin oyuncuya bağlı olarak değişebileceğinden, CanSendCallInviteAsync() önce PromptPhoneBook() çağırmalısınız, çünkü telefon rehberini görme yeteneği oyuncuya bağlı olabilir.

Bir oyuncu telefon rehberini açmaya uygun değilse, bir hata diyaloğu gösterilir.

Bu yöntemin örnek bir uygulaması için Roblox Connect'e bakın.

Parametreler

player: Instance

Telefon rehberiyle soru sormak için oyuncu.

Varsayılan değer: ""
tag: string

Farklı telefon rehberi "giriş noktaları" veya benzerleri arasında ayırt etmek için yardımcı olan metin.Örneğin, çağrı yapan oyuncunun şu anda hangi deneyim bölgesinde olduğunu tanımlayan bir dize geçirebilirsiniz.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

The following code sample, placed within a child LocalScript of a GuiButton, uses CanSendCallInviteAsync() to confirm that the player can make a call. If so, it connects PromptPhoneBook() to the button's Activated event.

SocialService:PromptPhoneBook()

local Players = game:GetService("Players")
local SocialService = game:GetService("SocialService")
local player = Players.LocalPlayer
local button = script.Parent
button.Visible = false
-- Function to check whether the player can send a call invite
local function canSendCallingInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendCallInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canCall = canSendCallingInvite(player)
if canCall then
button.Visible = true
button.Activated:Connect(function()
SocialService:PromptPhoneBook(player, "")
end)
end

ShowSelfView

()

Çağıran oyuncunun kendi görüşünü gösterir. Eğer bu yöntem kendi görüşü zaten görülebilirken çağrılırsa, hiçbir şey yapmaz.

Parametreler

selfViewPosition: Enum.SelfViewPosition

Kendi görüntüsünü yerleştirmek için konum.

Varsayılan değer: "LastPosition"

Dönüşler

()

CanSendCallInviteAsync

Bekletir

Verilen 'a bir arama daveti gönderebilirse döndürür if the given can send a call invite to a friend.Telefon rehberini açma yeteneği oyuncuya bağlı olarak değişebileceğinden, bu yöntemin sonucunu her zaman çağırmadan önce kullanmalısınız PromptPhoneBook() çünkü oyuncu bağımlı olabilir.

Bu yöntemin örnek bir uygulaması için Roblox Connect'e bakın.

Parametreler

player: Instance

Oyuncunun Player örneği potansiyel olarak bir çağrı daveti gönderiyor.

Varsayılan değer: ""

Dönüşler

Belirtilen oyuncu bir çağrı daveti gönderebilir mi.

Kod Örnekleri

The following code sample, placed within a child LocalScript of a GuiButton, uses CanSendCallInviteAsync() to confirm that the player can make a call. If so, it connects PromptPhoneBook() to the button's Activated event.

SocialService:PromptPhoneBook()

local Players = game:GetService("Players")
local SocialService = game:GetService("SocialService")
local player = Players.LocalPlayer
local button = script.Parent
button.Visible = false
-- Function to check whether the player can send a call invite
local function canSendCallingInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendCallInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canCall = canSendCallingInvite(player)
if canCall then
button.Visible = true
button.Activated:Connect(function()
SocialService:PromptPhoneBook(player, "")
end)
end

CanSendGameInviteAsync

Bekletir

CanSendGameInviteAsync() geri döndürür true eğer verilen Player mevcut deneyime diğer oyuncuları davet edebilirse.Oyuncuları davet etme yeteneği platform veya oyuncu bağlı olarak değişebileceğinden, bu yöntemin sonucunu her zaman çağırmadan önce kullanmalısınız PromptGameInvite() .

Oyuncu davet isteklerinin uygulanması, özelleştirilmesi ve bildirimlerin kullanılması ile ilgili daha fazla ayrıntı için Oyuncu Davet İstekleri bakınız. başlatma verilerini kullanma.

Parametreler

player: Instance

Oyuncunun Player potansiyel olarak bir davet göndermesi durumu.

Varsayılan değer: ""
recipientId: number

Opsiyonel Player.UserId potansiyel alıcının , gönderenin belirli alıcıyı davet edebileceğini kontrol etmek için kullanılan.

Varsayılan değer: 0

Dönüşler

Belirtilen oyuncunun bir davet gönderebileceği.

Kod Örnekleri

The following code sample uses CanSendGameInviteAsync() to confirm whether the local Player can send an invite. If true, it then prompts the invite using PromptGameInvite().

Sending an Invite

local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Function to check whether the player can send an invite
local function canSendGameInvite(sendingPlayer)
local success, canSend = pcall(function()
return SocialService:CanSendGameInviteAsync(sendingPlayer)
end)
return success and canSend
end
local canInvite = canSendGameInvite(player)
if canInvite then
SocialService:PromptGameInvite(player)
end

GetEventRsvpStatusAsync

Bekletir

Verilen etkinlik için yerel oyuncunun RSVP durumunu döndürür.Etkinlikler mevcut deneyimde olmalı ve henüz başlamamış olmalıdır.Etkinlik zaten başladıysa, bu yöntem bir hata döndürecektir.

Oyuncunun etkinlik için RSVP durumunu değiştirmesini istemek için PromptRsvpToEventAsync() kullanabileceğinizi unutmayın.

Parametreler

eventId: string

Oyuncunun RSVP durumunu değiştirmesini istemek için olayın ID'si.Bu, mevcut deneyimde mevcut ve bir dize olarak temsil edilen geçerli bir etkinlik kimliği olmalıdır (bir sayı değil).

Varsayılan değer: ""

Dönüşler

Oyuncunun etkinlik için mevcut RSVP durumunu gösteren bir Enum.RsvpStatus döndürür.Oyuncu etkinliğe RSVP yapmadıysa, bu Enum.RsvpStatus.None döndürecektir.

Kod Örnekleri

The following example checks if a player is RSVP'd to an event; if not, it gives them the option to RSVP. If the player is already RSVP'd, it gives them the option to cancel their RSVP.

The following Script assumes that RunContext is set to Enum.RunContext.Client and that two sibling ProximityPrompts are in place: one for following the event and one for unfollowing the event. The prompts are enabled or disabled based on the player's RSVP status.

SocialService:PromptRsvpToEventAsync()

local SocialService = game:GetService("SocialService")
local EVENT_ID = "YOUR_EVENT_ID"
local followPrompt : ProximityPrompt = script.Parent.FollowProximityPrompt
local unFollowPrompt : ProximityPrompt = script.Parent.UnfollowProximityPrompt
local function updatePrompt(rsvpStatus : Enum.RsvpStatus)
if rsvpStatus == Enum.RsvpStatus.Going then
unFollowPrompt.Enabled = true
followPrompt.Enabled = false
else
unFollowPrompt.Enabled = false
followPrompt.Enabled = true
end
end
local success, currentRsvpStatus = pcall(function()
return SocialService:GetEventRsvpStatusAsync(EVENT_ID)
end)
if not success then
-- Could not retrieve RSVP status; don't enable either proximity prompt
warn("Failed to get RSVP status:", currentRsvpStatus)
return
end
print("CurrentRsvpStatus:", currentRsvpStatus)
updatePrompt(currentRsvpStatus)
unFollowPrompt.Triggered:Connect(function(player)
local rsvpStatus = SocialService:PromptRsvpToEventAsync(EVENT_ID)
updatePrompt(rsvpStatus)
end)
followPrompt.Triggered:Connect(function(player)
local rsvpStatus = SocialService:PromptRsvpToEventAsync(EVENT_ID)
updatePrompt(rsvpStatus)
end)

GetPartyAsync

Bekletir

Verilen partyId ile ilişkili tüm üyelere ait verileri içeren bir dizi sözlük döndürür.Geri döndürülen dizi, deneyim içindeki tüm aktif sunucu örnekleri arasındaki parti durumunu yansıtır ve her parti üyesi parti davetini kabul ettiğinde zamana göre sıralanır.Bu, düzenekteki ilk elemanın kabul etmesi en erken ve sonuncusunun en yeni olması demektir.

Bu yöntem, şu anda deneyimde ve farklı sunucularda bulunan tüm parti üyeleri hakkında güncel bilgileri almak ve koordineli grup davranışlarını etkinleştirmek gibi teleportasyon, maç yapma veya parti tabanlı oyun mantığı gibi grup davranışlarını koordine etmek için yararlıdır.

Döndürülen dize içindeki her sözlük aşağıdaki alanları içerir:


<th>Değer Türü</th>
<th>Açıklama</th>
</tr>
</thead>
<tbody>
<tr>
<th><code>KullanıcıID</code></th>
<td>sayı</td>
<td>Oyuncunun <code>Class.Player.UserId</code> özelliği.</td>
</tr>
<tr>
<th><code>YerId</code></th>
<td>sayı</td>
<td>Parti üyesinin şu anda bulunduğu yerin <code>Class.DataModel.PlaceId</code> 'si.</td>
</tr>
<tr>
<th><code>İşIdi</code></th>
<td>sipariş</td>
<td>Kullanıcının şu anda bulunduğu sunucu örneğinin <code>Class.DataModel.JobId</code> sınıfı.</td>
</tr>
<tr>
<th><code>ÖzelSunucuId</code></th>
<td>sipariş</td>
<td>Eğer geçerliyse, parti üyesi özel veya rezerve bir sunucuda olduğunda <code>Class.DataModel.PrivateServerId</code> .</td>
</tr>
<tr>
<th><code>KayıtlıSunucuErişimKodu</code></th>
<td>sipariş</td>
<td>Uygulanabilirse, kullanıcının şu anda bulunduğu rezerve edilmiş sunucunun erişim kodu.Parti üyelerini birbirine <code>Sınıf.TeleportService:TeleportAsync()</code> kullanarak ışınlamak için yararlı.</td>
</tr>
</tbody>
Anahtar

Bu hizmetin Roblox Studio'da oynatma testi sırasında çalışmadığını unutmayın; deneyimin yönlerini test etmek için deneyimi yayınlamalı ve Roblox uygulamasında oynamalısınız.

Parametreler

partyId: string
Varsayılan değer: ""

Dönüşler

Deneyimde bulunan belirtilen parti üyelerini temsil eden bir dizi sözlük.

Kod Örnekleri

The following example checks if a player is in a party when they join. If so, it retrieves the latest party data using SocialService:GetPartyAsync() and outputs the details of each party member.

SocialService:GetPartyAsync()

local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local partyId = player.PartyId
if partyId == "" then
warn("Player is not in a party")
return
end
local success, partyData = pcall(function()
return SocialService:GetPartyAsync(partyId)
end)
if success and partyData then
for _, partyMemberData in partyData do
print(
partyMemberData.UserId,
partyMemberData.PlaceId,
partyMemberData.JobId,
partyMemberData.PrivateServerId,
partyMemberData.ReservedServerAccessCode
)
end
else
warn("Failed to retrieve party data")
end
end)

PromptRsvpToEventAsync

Bekletir

PromptRsvpToEventAsync() yerel oyuncuya, RSVP durumunu verilen etkinliğe değiştirebilecekleri bir uyarı görüntüler.

Etkinlikler mevcut deneyimde olmalı ve henüz başlamamış olmalıdır. Etkinlik zaten başladıysa, bu yöntem bir hata döndürecektir.

Bu yöntemi çağırmadan önce oyuncunun mevcut RSVP durumunu kontrol etmek için GetEventRsvpStatusAsync() kullanabileceğinizi unutmayın.

Parametreler

eventId: string

Oyuncunun RSVP durumunu değiştirmesini istemek için olayın ID'si.Bu, mevcut deneyimde mevcut ve bir dize olarak temsil edilen geçerli bir etkinlik kimliği olmalıdır (bir sayı değil).

Varsayılan değer: ""

Dönüşler

İstek kapatıldıktan sonra oyuncunun yeni RSVP durumunu gösteren bir Enum.RsvpStatus döndürür.Oyuncu RSVP durumunu değiştirmeden istemiyi kapatırsa, bu Enum.RsvpStatus.None veya eski Enum.RsvpStatus durumlarını geri döndürecektir, eğer zaten bir durum seçmişlerse.

Kod Örnekleri

The following example checks if a player is RSVP'd to an event; if not, it gives them the option to RSVP. If the player is already RSVP'd, it gives them the option to cancel their RSVP.

The following Script assumes that RunContext is set to Enum.RunContext.Client and that two sibling ProximityPrompts are in place: one for following the event and one for unfollowing the event. The prompts are enabled or disabled based on the player's RSVP status.

SocialService:PromptRsvpToEventAsync()

local SocialService = game:GetService("SocialService")
local EVENT_ID = "YOUR_EVENT_ID"
local followPrompt : ProximityPrompt = script.Parent.FollowProximityPrompt
local unFollowPrompt : ProximityPrompt = script.Parent.UnfollowProximityPrompt
local function updatePrompt(rsvpStatus : Enum.RsvpStatus)
if rsvpStatus == Enum.RsvpStatus.Going then
unFollowPrompt.Enabled = true
followPrompt.Enabled = false
else
unFollowPrompt.Enabled = false
followPrompt.Enabled = true
end
end
local success, currentRsvpStatus = pcall(function()
return SocialService:GetEventRsvpStatusAsync(EVENT_ID)
end)
if not success then
-- Could not retrieve RSVP status; don't enable either proximity prompt
warn("Failed to get RSVP status:", currentRsvpStatus)
return
end
print("CurrentRsvpStatus:", currentRsvpStatus)
updatePrompt(currentRsvpStatus)
unFollowPrompt.Triggered:Connect(function(player)
local rsvpStatus = SocialService:PromptRsvpToEventAsync(EVENT_ID)
updatePrompt(rsvpStatus)
end)
followPrompt.Triggered:Connect(function(player)
local rsvpStatus = SocialService:PromptRsvpToEventAsync(EVENT_ID)
updatePrompt(rsvpStatus)
end)

Etkinlikler

CallInviteStateChanged

Bu olay, bir oyuncunun çağrı daveti durumu değiştiğinde ateşlenir.

Parametreler

player: Instance

Çağrı daveti durumu değişikliği olan oyuncunun Player örneği.

inviteState: Enum.InviteState

Yeni çağrı davet durumu.


Kod Örnekleri

SocialService.CallInviteStateChanged

local SocialService = game:GetService("SocialService")
local button = script.Parent
local isPhonebookOpen = false
SocialService.CallInviteStateChanged:Connect(function(_, inviteState)
local isCalling = inviteState == Enum.InviteState.Placed
if isCalling or isPhonebookOpen then
button.Visible = false
else
button.Visible = true
end
end)

GameInvitePromptClosed

Bu etkinlik, bir oyuncu davet istemesini kapattığında ateşlenir.

Parametreler

player: Instance

Uyarıyı kapatan oyuncunun Player örneği.

recipientIds: Array

Artık doldurulmadı; boş bir dizi.


PhoneBookPromptClosed

Bir oyuncu telefon rehberini kapattığında ateş eder.

Parametreler

player: Instance

Telefon rehberini kapatan oyuncunun Player örneği.


Geri Aramalar

OnCallInviteInvoked

Bir telefon rehberinden bir çağrı yapıldığında işlenmesi gereken bir geri arama.tag paraçı, farklı "giriş noktaları" veya benzerleri arasında ayırt etmek için kullanılabilir, PromptPhoneBook() 'de açıklanan gibi.Sadece bir geri arama ayarlanabilir.

Parametreler

tag: string

Farklı telefon rehberi giriş noktaları arasında ayırt etmeye yardımcı olan dize.

callParticipantIds: Array

Çağrıya dahil olan tüm oyuncuları içeren array. Çağıran daima arraydaki ilk oyuncu olacaktır.


Dönüşler

Değerleri ve olarak döndürülen ve anahtarlarını içeren tablo, değerleri ve sunucuya erişim kodu tarafından döndürülen sunucu erişim kodu.

Kod Örnekleri

SocialService.OnCallInviteInvoked

local SocialService = game:GetService("SocialService")
local TeleportService = game:GetService("TeleportService")
SocialService.OnCallInviteInvoked = function()
local placeId = 0123456789 -- This is the place ID of the desired place to drop call participants into
local accessCode = TeleportService:ReserveServer(placeId)
return { ReservedServerAccessCode = accessCode, PlaceId = placeId }
end