#Problem buying a gamepass
1 messages · Page 1 of 1 (latest)
my script local :
local player = game.Players.LocalPlayer
purchaseButton.MouseButton1Click:connect(function()
if player then
print("je clique")
game:GetService("MarketplaceService"):PromptGamePassPurchase(player, selectedItem.GamePassId)
end
end)
my script server:
local Players = game:GetService("Players")
local MarketplaceService = game:GetService("MarketplaceService")
local PlayerLocal = Players.LocalPlayer
local gamepassId = 1352476550
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
local success, hasPass = pcall(function()
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, gamepassId)
end)
print("success" .. tostring(success))
print("hasPass" .. tostring(hasPass))
if success and hasPass then
local staminaBoost = Instance.new("BoolValue")
staminaBoost.Name = "HasStaminaBoost"
staminaBoost.Value = true
staminaBoost.Parent = player
print("je crée la variable a true")
end
end)
end)
I should point out that it's normal for me to only check when the character spawns because I buy the game pass in a lobby.
does it print
No
😭
Success is at true since the beginning
And hasFalse is False constantly
local PlayerLocal = Players.LocalPlayer
Its ok I understand english
and then overwrite it on purchase
on server ?
No local
yeah well it doesn't work
can't detect localplayer on server
however you use game.playersadded
which is used on server to detect player
Yes and my variable PlayerLocal is not used I think finally
Ok ill try
check the output
Ok i Check in 5min thanks you for your time
after buying
** You are now Level 6! **
c'est a cause de ça
tu utilises CharacterAdded
qui est executé a chaque fois que tu spawn
yes
tu me conseillerai comment?
(quand jachete le gamepass je precise que mon character n'a pas encore spawn)
déjà
même
même en soit même si c'est pas optimale je suis daccord avec toi mais c'est censé quand même marché
Déjà elle est où la fonction qui permet de process le paiement ?
le mieux c'est de faire un remoteevent
c'est au server de faire le prompt
pas au client
Le mieux:
utilise un remote event
Qui envoie le player uniquement
donc en local y'a juste RemoteEvent:FireServer()
juste ça
du serveur tu reçois
RemoteEvent.OnServerEvent:Connect(function(player)
de la
yes logique
MarketplaceService:PromptGamePassPurchase(player, productId)
tu fais ça
att
c'est aps la bonne fonction
Voilà
tu prompt le gamepass
mais une fois que t'as fait ça
roblox te permet de savoir si quelqu'un à acheter ou non
ok je vais essayer
je te remercie
PromptGamePassPurchaseFinished est triggered quand le joueur à soit appuyer sur le bouton d'achat soit le bouton cancel
je te tiens au jus je te remercie
donc avec le wasPurchased qui est un bool tu sais si oui ou non l'achat a été effectué
yes je vois le delire javais vu ca dans la doc
ok merci
et c'est ce que tu dois faire
du client tu ne devrais jamais avoir a touché des trucs sensibles
voici ce que j'ai fait
ça marche par contre
PromptGamePassFinished ca marche uniquement sur un script local
et non pas serveur
et j'ai question en voulant faire ce code reutilisable pour les 4 autres boutons, comment je pourrai associer la recompense en fonction du gamepassID sans avoir du code en dur, comment je fait en cas de triche?
j'ai pas compris
ah
le gamepassId c'est l'id du gamepass qui a été utilise pour acheter
donc ut peux pas tricher là dessus
c'est roblox lui meme qui sort le gamepassid
et la vu que je suis en "test" j'ai pas de pop-up qui me dit que j'ai deja acheter
je peux racheter a l'infini
c'est que sur studio
c'est celle-ci non "MarketplaceService:UserOwnsGamePassAsync(player.UserId, gamePassId)"
que je dois utiliser
elle vérifie si tu possède le gamepass dans ton inventaire oui
et ça marchera pas sur studio
pour verifier que j'ai deja acheter je le mets içi dans mon print ? "local Players = game:GetService("Players")
local MarketplaceService = game:GetService("MarketplaceService")
local purchaseEvent = game.ReplicatedStorage:FindFirstChild("PurchaseEvent")
purchaseEvent.OnServerEvent:Connect(function(player,gamepassId)
print("je le mets içi ")
MarketplaceService:PromptGamePassPurchase(player, gamepassId)
end)"
car il faut vraiment le posséder
ah donc j'ai meme pas besoins de faire la verif avec ca enfaite " "MarketplaceService:UserOwnsGamePassAsync(player.UserId, gamePassId)""
bah si le joueur le possède déjà tu veux pas lui faire apparaitre la popup
donc tu test
ah ok j'ai compris
grosso modo, elle sert juste a ne pas faire le pop-up mais si je la mets pas yaura quand même le pop-up mais roblox va m'empecher de l'acheter?
roblox dira juste "vous posséder déjà le gamepass"
je vois
donc ça va afficher pour rien
je te remercie.
de rien
je peux t'ajouter en ami si jamais j'ai encore besoins d'aide sur une autre fonctionnalité?
mes dms sont ouvert
ca marche merci