Les Passes vous permettent de facturer un forfait unique en Robux pour permettre aux joueurs d'accéder à des privilèges spéciaux dans une expérience, comme pour entrer dans une zone restreinte, obtenir un objet d'avatar dans l'expérience ou un bonus permanent.
Créer des Passes
Lorsque vous créez une image pour votre Passe, tenez compte des exigences suivantes :
- Utilisez un modèle de 512 × 512 pixels.
- Enregistrez l'image au format .jpg, .png ou .bmp.
- N'incluez aucun détail important en dehors des limites du cercle, car le processus de téléchargement réduit et recadre le badge final en une image en forme de cercle.
Pour créer un nouveau Passe :
Accédez à l'Interface de création.
Cliquez sur l'expérience pour laquelle vous souhaitez créer un Passe. La page Aperçu de l'expérience s'affiche.
Dans la navigation de gauche, sélectionnez Objets associés. La page Objets associés s'affiche pour l'expérience en question.
Dans la navigation horizontale, sélectionnez PASSES. Tous les Passes de cette expérience s'affichent.
Cliquez sur le bouton CRÉER UN PASSE. La page Créer un Passe s'affiche.
Cliquez sur le bouton UPLOADER UNE IMAGE. Un navigateur de fichiers s'affiche.
Sélectionnez l'image que vous souhaitez afficher comme icône, puis cliquez sur le bouton Ouvrir.
Complétez les champs suivants :
- Nom : le titre de votre Passe.
- Description : une description de ce à quoi un joueur doit s'attendre lorsqu'il achète le Passe.
Cliquez sur le bouton CRÉER UN PASSE. Le Passe s'affiche dans la section Passe de la page Objets associés.
Localiser les ID de Passe
Un ID de Passe est l'identifiant unique d'un Passe. Vous avez besoin de cet ID pour attribuer un privilège spécial au Passe.
Pour localiser l'ID d'un Passe :
Accédez à la section Passes de la page Objets associés d'une expérience.
Passez le curseur sur une vignette de Passe et cliquez sur le bouton
⋯ . Un menu contextuel s'affichera. Sélectionnez Copier l'ID de l'actif. L'ID de Passe se copie dans votre presse-papiers.
Monétisation des Passes
Une fois que vous avez créé un Passe, vous pouvez configurer ses paramètres pour le monétiser.
Pour monétiser un Passe :
Accédez à la section Passes de la page Objets associés d'une expérience.
Passez le curseur sur une vignette de Passe et cliquez sur le bouton
⋯ . Un menu contextuel s'affichera. Sélectionnez Ouvrir dans un nouvel onglet. La page Paramétrer les Passes s'affiche.
Dans le menu de gauche, sélectionnez Ventes.
Activez le bouton Objet à vendre.
Dans le champ Prix, saisissez la quantité de Robux que vous souhaitez facturer aux joueurs pour le Passe. Le prix que vous saisissez affecte le montant de Robux que vous gagnez par vente.
Cliquez sur le bouton Enregistrer.
Le Passe est maintenant disponible dans l'onglet Boutique de la page de votre expérience.
Allocation des privilèges du Passe
Une fois qu'un joueur achète un Passe, il s'attend à recevoir le privilège spécial associé lorsqu'il joue à votre expérience. Cela ne se produit pas automatiquement. Vous devez donc vérifier quels sont les joueurs qui possèdent le Passe et leur attribuer le privilège spécial.
Le script suivant permet de vérifier à quel moment un joueur entre dans l'expérience, puis de contrôler si ce joueur possède le Passe avec l'ID correspondant configuré dans la variable passID. Placez ce code dans un Script dans ServerScriptService afin que le serveur puisse traiter le privilège spécial accordé au joueur.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local passID = 0000000 -- Change this to your Pass ID
local function onPlayerAdded(player)
local hasPass = false
-- Check if the player already owns the Pass
local success, message = pcall(function()
hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, passID)
end)
-- If there's an error, issue a warning and exit the function
if not success then
warn("Error while checking if player has pass: " .. tostring(message))
return
end
if hasPass then
print(player.Name .. " owns the Pass with ID " .. passID)
-- Assign this player the ability or bonus related to the Pass
end
end
-- Connect "PlayerAdded" events to the function
Players.PlayerAdded:Connect(onPlayerAdded)
Incitations à l'achat dans l'expérience
Bien que les joueurs puissent acheter leurs Passes directement depuis la page principale de votre expérience, vous pouvez également proposer des achats dans l'expérience aux joueurs par le biais d'une boutique ou d'un PNJ de fournisseur dans l'expérience. Reportez-vous à l'exemple de scripts côté serveur et côté client pour consulter un modèle de base visant à inciter les joueurs à acheter des Passes.
Exemple de script côté serveur
Placez ce code dans un objet Script dans ServerScriptService afin que le serveur puisse traité le privilège spécial accordé au joueur.
local MarketplaceService = game:GetService("MarketplaceService")
local passID = 0000000 -- Change this to your Pass ID
-- Function to handle a completed prompt and purchase
local function onPromptPurchaseFinished(player, purchasedPassID, purchaseSuccess)
if purchaseSuccess and purchasedPassID == passID then
print(player.Name .. " purchased the Pass with ID " .. passID)
-- Assign this player the ability or bonus related to the Pass
end
end
-- Connect "PromptGamePassPurchaseFinished" events to the function
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptPurchaseFinished)
Exemple de script côté client
Le code suivant implémente une fonction promptPurchase() qui vérifie en toute sécurité si un joueur possède un Passe et, dans le cas contraire, l'invite à l'acheter. Placez ce code dans un LocalScript et appelez promptPurchase() dans le cas où, par exemple, le joueur clique sur un bouton ou lorsque son personnage touche à un élément.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local passID = 0000000 -- Change this to your Pass ID
-- Function to prompt purchase of the Pass
local function promptPurchase()
local player = Players.LocalPlayer
local hasPass = false
local success, message = pcall(function()
hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, passID)
end)
if not success then
warn("Error while checking if player has pass: " .. tostring(message))
return
end
if hasPass then
-- Player already owns the Pass; tell them somehow
else
-- Player does NOT own the Pass; prompt them to purchase
MarketplaceService:PromptGamePassPurchase(player, passID)
end
end