← Retour LearnBloxLearnBlox

Ajouter un GamePass à son jeu

Guide débutant

Un GamePass, c'est un achat unique qui débloque un avantage permanent : un skin exclusif, une zone VIP, un double de vitesse. Contrairement aux Robux qu'on dépense dans le jeu, l'achat se fait une fois et reste acquis pour toujours.

Le processus a deux étapes bien distinctes : créer le GamePass sur le site Roblox (aucun code), puis vérifier en jeu si le joueur l'a acheté avec MarketplaceService. Ce guide couvre la partie code — la création se fait dans le Creator Dashboard.

📝 Étape 1 — Créer le GamePass (sans code)
  1. Va sur create.roblox.com → sélectionne ton jeu → onglet Monetization
  2. Clique PassesCreate a Pass
  3. Ajoute une image, un nom clair, une description et fixe le prix en Robux
  4. Note l'ID du GamePass affiché dans l'URL une fois créé — tu en auras besoin dans le script
🔍 Vérifier si le joueur l'a acheté
local MarketplaceService = game:GetService("MarketplaceService")
local GAMEPASS_ID = 123456789 -- remplace par ton ID

local function possedeGamePass(joueur)
    local ok, resultat = pcall(function()
        return MarketplaceService:UserOwnsGamePassAsync(joueur.UserId, GAMEPASS_ID)
    end)
    return ok and resultat
end
⚠️ UserOwnsGamePassAsync est un appel réseau : toujours dans un pcall, jamais dans une boucle rapide (respecte un cache si tu la vérifies souvent).
🎁 Débloquer l'avantage à la connexion
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(joueur)
    if possedeGamePass(joueur) then
        local humanoid = joueur.Character and joueur.Character:FindFirstChild("Humanoid")
        if humanoid then
            humanoid.WalkSpeed = 32 -- ex: vitesse doublée
        end
        print(joueur.Name .. " possède le GamePass Vitesse+")
    end
end)
🛒 Proposer l'achat depuis un bouton
-- LocalScript, sur un TextButton "Acheter"
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local joueur = Players.LocalPlayer
local GAMEPASS_ID = 123456789

script.Parent.MouseButton1Click:Connect(function()
    MarketplaceService:PromptGamePassPurchase(joueur, GAMEPASS_ID)
end)
💡 PromptGamePassPurchase ouvre la fenêtre d'achat native Roblox — tu n'as rien d'autre à construire pour l'interface de paiement.
🔔 Réagir juste après l'achat (sans reconnexion)
local MarketplaceService = game:GetService("MarketplaceService")

MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(joueur, gamePassId, achete)
    if achete and gamePassId == GAMEPASS_ID then
        -- Débloquer l'avantage immédiatement, sans attendre une reconnexion
        print(joueur.Name .. " vient d'acheter le GamePass !")
    end
end)
✅ Bonnes pratiques & erreurs fréquentes
  • Vérifie toujours côté serveur, jamais uniquement côté client : un LocalScript peut être manipulé, la vérification serveur ne peut pas être trichée.
  • Écoute PromptGamePassPurchaseFinished pour débloquer l'avantage tout de suite, sans forcer le joueur à se reconnecter.
  • Choisis un prix cohérent avec l'avantage : un GamePass trop cher pour un petit bonus cosmétique se vend mal — regarde ce que font des jeux similaires au tien.
  • Mets à jour ta description et ta vignette régulièrement : un GamePass avec une image floue ou une description vague convertit beaucoup moins.

Va plus loin : monétisation complète

Ce guide couvre les bases du GamePass. Le module Coder la monétisation : GamePasses & Developer Products détaille aussi les achats consommables (Developer Products), les boutiques en jeu et les bonnes pratiques anti-triche.

Voir le module gratuitement →