SocialService

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Service
Non répliqué

SocialService facilite les fonctions sociales qui impactent les relations établies sur la plate-forme Roblox.Son usage principal est de montrer invitations d'invitation et le répertoire téléphonique aux joueurs, leur permettant d'envoyer des demandes d'invitation à leurs amis via PromptGameInvite() et PromptPhoneBook().Vous pouvez utiliser des signaux lorsque de telles demandes sont faites.

Résumé

Méthodes

Évènements

Rappels

Propriétés

Méthodes

GetPlayersByPartyId

Instances

Retourne une table de tous les objets connectés actuellement qui ont la propriété correspondante fournie .Cette méthode se comporte de manière similaire à Players:GetPlayers() mais filtre les résultats pour inclure uniquement les joueurs appartenant à la partie spécifiée.

Notez que ce service ne fonctionne pas pendant les tests de jeu dans Roblox Studio ; pour tester les aspects de votre expérience en l'utilisant, vous devez publier l'expérience et la jouer dans l'application Roblox.

Paramètres

partyId: string
Valeur par défaut : ""

Retours

Instances

Une table de Player objets dont la propriété Player.PartyId correspond au partyId passé.

Échantillons de code

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)
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

()

Masque la vue d'un joueur appelant de lui-même. Si cette méthode est appelée alors que la vue d'un joueur est déjà cachée, elle ne fait rien.


Retours

()

PromptGameInvite

()

PromptGameInvite() affiche une invitation rapide au joueur local à travers laquelle il peut inviter ses amis à l'expérience actuelle.Avant d'appeler cette méthode, vous devez utiliser CanSendGameInviteAsync() pour déterminer si le joueur peut envoyer une invitation, car cette capacité peut varier en fonction de la plate-forme ou du joueur.

Voir invitations de joueur pour plus de détails sur la mise en œuvre d'invitations, la personnalisation d'invitations et de notifications, et l'utilisation des données de lancement.

Paramètres

player: Instance

Le Player pour demander avec la pop-up d'invitation.

Valeur par défaut : ""
experienceInviteOptions: Instance

Objet facultatif ExperienceInviteOptions optionnel pour personnaliser la demande.

Valeur par défaut : "nil"

Retours

()

Échantillons de code

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

()

Demande au livre de téléphone donné Player avec l'annuaire téléphonique.Si le joueur choisit d'appeler quelqu'un, l'événement CallInviteStateChanged se déclenche.Vous devez utiliser CanSendCallInviteAsync() avant d'appeler PromptPhoneBook() puisque la capacité de voir l'annuaire téléphonique peut varier en fonction du joueur.

Si un joueur n'est pas éligible pour ouvrir le répertoire téléphonique, un dialogue d'erreur est affiché.

Voir Roblox Connect pour une implémentation d'échantillon de cette méthode.

Paramètres

player: Instance

Le joueur à interroger avec le répertoire téléphonique.

Valeur par défaut : ""
tag: string

Chaîne pour aider à différencier entre divers points d'entrée du répertoire téléphonique ou similaires.Par exemple, vous pouvez passer une chaîne définissant dans quelle région d'une expérience le personnage de l'appelant se trouve actuellement.

Valeur par défaut : ""

Retours

()

Échantillons de code

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

()

Affiche la vue d'un joueur appelant de lui-même. Si cette méthode est appelée alors que la vue d'un joueur est déjà visible, elle ne fait rien.

Paramètres

selfViewPosition: Enum.SelfViewPosition

La position pour placer la vue d'ensemble.

Valeur par défaut : "LastPosition"

Retours

()

CanSendCallInviteAsync

Rendement

Retourne true si le donné Player peut envoyer une invitation à un appel à un ami.Vous devez toujours utiliser le résultat de cette méthode avant d'appeler PromptPhoneBook() puisque la capacité d'ouvrir le répertoire téléphonique peut varier en fonction du joueur.

Voir Roblox Connect pour une implémentation d'échantillon de cette méthode.

Paramètres

player: Instance

L'instance Player du joueur envoie potentiellement une invitation à un appel.

Valeur par défaut : ""

Retours

Si le joueur spécifié peut envoyer une invitation à un appel.

Échantillons de code

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

Rendement

CanSendGameInviteAsync() renvoie true si le donné Player peut inviter d'autres joueurs à l'expérience actuelle.Vous devez toujours utiliser le résultat de cette méthode avant d'appeler PromptGameInvite() puisque la capacité d'inviter des joueurs peut varier en fonction de la plate-forme ou du joueur.

Voir invitations de joueur Prompts pour plus de détails sur la mise en œuvre d'invitations de joueur, la personnalisation d'invitations et de notifications, et l'utilisation des données de lancement.

Paramètres

player: Instance

L'instance Player du joueur envoie potentiellement une invitation.

Valeur par défaut : ""
recipientId: number

Facultatif du récepteur potentiel , utilisé pour vérifier si l'expéditeur peut inviter ce destinataire spécifique.

Valeur par défaut : 0

Retours

Si le joueur spécifié peut envoyer une invitation.

Échantillons de code

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

GetPartyAsync

Rendement

Retourne un ensemble de dictionnaires contenant des données pour tous les membres associés au donné partyId.L'array retourné reflète l'état actuel du parti à travers toutes les instances de serveur actives dans l'expérience et il est ordonné par le temps auquel chaque membre du parti a accepté l'invitation du parti.Cela signifie que le premier élément dans l'array est le plus ancien à accepter et le dernier est le plus récent.

Cette méthode est utile pour récupérer des informations à jour sur tous les membres de la partie actuellement dans l'expérience et sur différents serveurs, ce qui permet d'activer un comportement de groupe coordonné comme la téléportation, le matchmaking ou la logique de jeu basée sur les parties.

Chaque dictionnaire dans l'array retourné contient les champs suivants :


<th>Type de valeur</th>
<th>Avertissement</th>
</tr>
</thead>
<tbody>
<tr>
<th><code>ID utilisateur</code></th>
<td>numéro</td>
<td>La propriété <code>Class.Player.UserId</code> du joueur.</td>
</tr>
<tr>
<th><code>Identifiant de lieu</code></th>
<td>numéro</td>
<td>Le <code>Class.DataModel.PlaceId</code> de l'endroit où le membre du groupe se trouve actuellement.</td>
</tr>
<tr>
<th><code>Id de travail</code></th>
<td>texte</td>
<td>Le <code>Class.DataModel.JobId</code> de l'instance du serveur dans laquelle l'utilisateur réside actuellement.</td>
</tr>
<tr>
<th><code>ID de serveur privé</code></th>
<td>texte</td>
<td>Si applicable, le <code>Class.DataModel.PrivateServerId</code> lorsque le membre du groupe est sur un serveur privé ou réservé.</td>
</tr>
<tr>
<th><code>Code d'accès au serveur réservé</code></th>
<td>texte</td>
<td>Si applicable, le code d'accès pour le serveur réservé dans lequel l'utilisateur réside actuellement.Utile pour téléporter les membres du groupe les uns aux autres en utilisant <code>Class.TeleportService:TeleportAsync()</code>.</td>
</tr>
</tbody>
Clé

Notez que ce service ne fonctionne pas pendant les tests de jeu dans Roblox Studio ; pour tester les aspects de votre expérience en l'utilisant, vous devez publier l'expérience et la jouer dans l'application Roblox.

Paramètres

partyId: string
Valeur par défaut : ""

Retours

Un ensemble de dictionnaires représentant les membres du parti spécifié qui sont actuellement dans l'expérience.

Échantillons de code

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)

Évènements

CallInviteStateChanged

Cet événement se déclenche lorsque l'état d'invitation d'un appel de joueur change.

Paramètres

player: Instance

L'instance Player du joueur qui a eu un état de modification d'invocation d'appel.

inviteState: Enum.InviteState

L'état d'invitation de nouvel appel.


Échantillons de code

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

Cet événement se déclenche lorsqu'un joueur ferme une invite.

Paramètres

player: Instance

L'instance Player du joueur qui a fermé la demande.

recipientIds: Array

Plus rempli ; une liste vide.


PhoneBookPromptClosed

Se déclenche lorsqu'un joueur ferme l'invite du répertoire téléphonique.

Paramètres

player: Instance

L'instance Player du joueur qui a fermé le répertoire de téléphone.


Rappels

OnCallInviteInvoked

Paramètres

tag: string
callParticipantIds: Array

Retours

Échantillons de code

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