Classe de moteur
SocialService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Résumé
Méthodes
CanSendCallInviteAsync(player: Instance):boolean |
CanSendGameInviteAsync(player: Instance,recipientId: User):boolean |
GetEventRsvpStatusAsync(eventId: string):Enum.RsvpStatus |
GetExperienceEventAsync(eventId: string):ExperienceEvent? |
GetPartyAsync(partyId: string):{any} |
GetPlayersByPartyId(partyId: string):{Player} |
GetUpcomingExperienceEventsAsync():{ExperienceEvent} |
HideSelfView():() |
PromptFeedbackSubmissionAsync(options: Dictionary?):() |
PromptGameInvite(player: Instance,experienceInviteOptions: Instance):() |
PromptLinkSharing(player: Player,options: Dictionary):Tuple |
PromptLinkSharingAsync(player: Player,options: Dictionary):Tuple |
PromptPhoneBook(player: Instance,tag: string):() |
PromptRsvpToEventAsync(eventId: string):Enum.RsvpStatus |
ShowSelfView(selfViewPosition: Enum.SelfViewPosition):() |
Événements
CallInviteStateChanged(player: Instance,inviteState: Enum.InviteState):RBXScriptSignal |
GameInvitePromptClosed(player: Instance,recipientIds: {any}):RBXScriptSignal |
PhoneBookPromptClosed(player: Instance):RBXScriptSignal |
ShareSheetClosed(player: Player):RBXScriptSignal |
Rappels
OnCallInviteInvoked(tag: string,callParticipantIds: {any}):Instance |
Référence API
Méthodes
CanSendCallInviteAsync
Paramètres
Retours
Échantillons de code
ServiceSocial:PromptPhoneBook()
local Players = game:GetService("Players")
local SocialService = game:GetService("SocialService")
local player = Players.LocalPlayer
local button = script.Parent
button.Visible = false
-- Fonction pour vérifier si le joueur peut envoyer une invitation à un appel
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)
endCanSendGameInviteAsync
Retours
Échantillons de code
Envoyer une invitation
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Fonction pour vérifier si le joueur peut envoyer une invitation
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)
endGetEventRsvpStatusAsync
Paramètres
Retours
Échantillons de code
ServiceSocial:DemanderRsvpPourÉvénementAsync()
local ServiceSocial = game:GetService("ServiceSocial")
local ID_DE_L'ÉVÉNEMENT = "VOTRE_ID_D'ÉVÉNEMENT"
local suiviPrompt: ProximityPrompt = script.Parent.FollowProximityPrompt
local nePlusSuivrePrompt: ProximityPrompt = script.Parent.UnfollowProximityPrompt
local function mettreÀJourPrompt(statutRsvp: Enum.RsvpStatus)
if statutRsvp == Enum.RsvpStatus.Going then
nePlusSuivrePrompt.Enabled = true
suiviPrompt.Enabled = false
else
nePlusSuivrePrompt.Enabled = false
suiviPrompt.Enabled = true
end
end
local succès, statutRsvpActuel = pcall(function()
return ServiceSocial:GetEventRsvpStatusAsync(ID_DE_L'ÉVÉNEMENT)
end)
if not succès then
-- Impossible de récupérer le statut RSVP ; ne pas activer l'invite de proximité
warn("Échec de la récupération du statut RSVP:", statutRsvpActuel)
return
end
print("StatutRsvpActuel:", statutRsvpActuel)
mettreÀJourPrompt(statutRsvpActuel)
nePlusSuivrePrompt.Triggered:Connect(function(joueur)
local statutRsvp = ServiceSocial:DemanderRsvpPourÉvénementAsync(ID_DE_L'ÉVÉNEMENT)
mettreÀJourPrompt(statutRsvp)
end)
suiviPrompt.Triggered:Connect(function(joueur)
local statutRsvp = ServiceSocial:DemanderRsvpPourÉvénementAsync(ID_DE_L'ÉVÉNEMENT)
mettreÀJourPrompt(statutRsvp)
end)GetExperienceEventAsync
Paramètres
Retours
ExperienceEvent?
Échantillons de code
SocialService:GetUpcomingExperienceEventsAsync()
local SocialService = game:GetService("SocialService")
-- Découvrir le prochain événement à venir/actif et inviter le joueur à répondre
local function promptNextUpcomingEvent()
local success, eventsOrError = pcall(function()
return SocialService:GetUpcomingExperienceEventsAsync()
end)
if not success then
warn("Échec du chargement des événements à venir:", eventsOrError)
return
end
local upcomingEvents = eventsOrError
local selectedEvent
for _, event in ipairs(upcomingEvents) do
if not event.HasStarted and not event.HasEnded then
selectedEvent = event
break
end
end
if selectedEvent then
local success, result = pcall(function()
return SocialService:PromptRsvpToEventAsync(selectedEvent.Id)
end)
if not success then
warn("Échec de l'invitation à répondre:", result)
end
else
warn("Aucun événement futur disponible à inviter.")
return
end
end
promptNextUpcomingEvent()GetPartyAsync
Paramètres
Retours
É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("Le joueur n'est pas dans une fête")
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("Échec de la récupération des données de la fête")
end
end)GetPlayersByPartyId
Paramètres
Retours
{Player}
Échantillons de code
ServiceSocial: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("Membre du groupe : " .. partyMember.Name)
end
else
warn("Le joueur n'est pas dans un groupe")
end
end)Rééquilibrage d'équipe avec intégration de groupe
local Teams = game:GetService("Teams")
local Players = game:GetService("Players")
local SocialService = game:GetService("SocialService")
local redTeam = Instance.new("Team")
redTeam.Name = "Équipe Rouge"
redTeam.TeamColor = BrickColor.Red()
redTeam.AutoAssignable = false
redTeam.Parent = Teams
local blueTeam = Instance.new("Team")
blueTeam.Name = "Équipe Bleue"
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
-- Appelez cette fonction pour rééquilibrer les équipes
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)GetUpcomingExperienceEventsAsync
SocialService:GetUpcomingExperienceEventsAsync():{ExperienceEvent}
Retours
{ExperienceEvent}
Échantillons de code
SocialService:GetUpcomingExperienceEventsAsync()
local SocialService = game:GetService("SocialService")
-- Découvrir le prochain événement à venir/actif et inviter le joueur à répondre
local function promptNextUpcomingEvent()
local success, eventsOrError = pcall(function()
return SocialService:GetUpcomingExperienceEventsAsync()
end)
if not success then
warn("Échec du chargement des événements à venir:", eventsOrError)
return
end
local upcomingEvents = eventsOrError
local selectedEvent
for _, event in ipairs(upcomingEvents) do
if not event.HasStarted and not event.HasEnded then
selectedEvent = event
break
end
end
if selectedEvent then
local success, result = pcall(function()
return SocialService:PromptRsvpToEventAsync(selectedEvent.Id)
end)
if not success then
warn("Échec de l'invitation à répondre:", result)
end
else
warn("Aucun événement futur disponible à inviter.")
return
end
end
promptNextUpcomingEvent()HideSelfView
SocialService:HideSelfView():()
Retours
()
PromptFeedbackSubmissionAsync
Paramètres
Retours
()
Échantillons de code
ServiceSocial:DemanderSoumissionFeedbackAsync()
local SocialService = game:GetService("SocialService")
-- Fonction pour demander un retour d'information
local function promptForFeedback()
local success, errorMessage = pcall(function()
SocialService:PromptFeedbackSubmissionAsync()
end)
if success then
print("Demande de feedback terminée")
else
warn("Échec de la demande de feedback:", errorMessage)
end
end
-- Demander un retour d'information lorsque le joueur atteint une étape
local function onMilestoneReached()
promptForFeedback()
end
-- Exemple d'utilisation : Se connecter à un événement de jeu
game.ReplicatedStorage.MilestoneReached.OnClientEvent:Connect(onMilestoneReached)ServiceSocial:DemanderSoumissionFeedbackAsync() — Support Joueur
local ServiceSocial = game:GetService("SocialService")
local function demanderSupportJoueur()
local succès, messageErreur = pcall(function()
ServiceSocial:PromptFeedbackSubmissionAsync({
FeedbackType = Enum.FeedbackType.PlayerSupport,
})
end)
if succès then
print("Demande de support joueur terminée")
else
warn("Échec de l'invitation pour le support joueur :", messageErreur)
end
end
-- Exemple d'utilisation : Connecter à un bouton d'aide dans un ScreenGui
local boutonAide = script.Parent:WaitForChild("HelpButton")
boutonAide.Activated:Connect(function()
task.spawn(demanderSupportJoueur)
end)PromptGameInvite
Retours
()
Échantillons de code
Envoyer une invitation
local SocialService = game:GetService("SocialService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Fonction pour vérifier si le joueur peut envoyer une invitation
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)
endPromptLinkSharing
PromptLinkSharingAsync
Paramètres
| Valeur par défaut : "nil" |
Retours
PromptPhoneBook
Retours
()
Échantillons de code
ServiceSocial:PromptPhoneBook()
local Players = game:GetService("Players")
local SocialService = game:GetService("SocialService")
local player = Players.LocalPlayer
local button = script.Parent
button.Visible = false
-- Fonction pour vérifier si le joueur peut envoyer une invitation à un appel
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)
endPromptRsvpToEventAsync
Paramètres
Retours
Échantillons de code
ServiceSocial:DemanderRsvpPourÉvénementAsync()
local ServiceSocial = game:GetService("ServiceSocial")
local ID_DE_L'ÉVÉNEMENT = "VOTRE_ID_D'ÉVÉNEMENT"
local suiviPrompt: ProximityPrompt = script.Parent.FollowProximityPrompt
local nePlusSuivrePrompt: ProximityPrompt = script.Parent.UnfollowProximityPrompt
local function mettreÀJourPrompt(statutRsvp: Enum.RsvpStatus)
if statutRsvp == Enum.RsvpStatus.Going then
nePlusSuivrePrompt.Enabled = true
suiviPrompt.Enabled = false
else
nePlusSuivrePrompt.Enabled = false
suiviPrompt.Enabled = true
end
end
local succès, statutRsvpActuel = pcall(function()
return ServiceSocial:GetEventRsvpStatusAsync(ID_DE_L'ÉVÉNEMENT)
end)
if not succès then
-- Impossible de récupérer le statut RSVP ; ne pas activer l'invite de proximité
warn("Échec de la récupération du statut RSVP:", statutRsvpActuel)
return
end
print("StatutRsvpActuel:", statutRsvpActuel)
mettreÀJourPrompt(statutRsvpActuel)
nePlusSuivrePrompt.Triggered:Connect(function(joueur)
local statutRsvp = ServiceSocial:DemanderRsvpPourÉvénementAsync(ID_DE_L'ÉVÉNEMENT)
mettreÀJourPrompt(statutRsvp)
end)
suiviPrompt.Triggered:Connect(function(joueur)
local statutRsvp = ServiceSocial:DemanderRsvpPourÉvénementAsync(ID_DE_L'ÉVÉNEMENT)
mettreÀJourPrompt(statutRsvp)
end)ShowSelfView
Paramètres
| Valeur par défaut : "LastPosition" |
Retours
()
Événements
CallInviteStateChanged
Paramètres
Échantillons de code
État d'invitation de l'appel SocialService
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
PhoneBookPromptClosed
Rappels
OnCallInviteInvoked
Retours
Échantillons de code
SocialService.InvitationEnLigneInvitée
local SocialService = game:GetService("SocialService")
local TeleportService = game:GetService("TeleportService")
SocialService.OnCallInviteInvoked = function()
local placeId = 0123456789 -- C'est l'ID du lieu où les participants à l'appel doivent être déposés
local accessCode = TeleportService:ReserveServerAsync(placeId)
return { ReservedServerAccessCode = accessCode, PlaceId = placeId }
end