Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why my dev product doesn't work?

Asked by
deris88 146
8 years ago

So I tried to make one and it looks like it should work, but I ran test, spent 5 robux and I didin't get thing that I should get when I buy that product. Here is the script :

local buyButton = script.Parent
local productId = 33818042
local mps = game:GetService("MarketplaceService")

function getPlayerById(id)
for i,v in pairs(game.Players:GetPlayers()) do
if v.userId == id then
return v
end
end
end

buyButton.MouseButton1Click:connect(function()
mps:PromptProductPurchase(game.Players.LocalPlayer, productId)
end)

mps.ProcessReceipt = function(info)
local plr = getPlayerById(info.PlayerId)
if plr and plr:FindFirstChild"leaderstats" and plr.leaderstats:FindFirstChild"Gems" then
plr.leaderstats.Gems.Value = plr.leaderstats.Gems.Value + 100
end
end

It seems like it should work but I didin't get my 100 gems. Help please.

2 answers

Log in to vote
0
Answered by 8 years ago

Not sure if this will work but it's worth a try!

-- Try putting this script into StarterPack

local MarketplaceService = game:GetService("MarketplaceService")
local ds = game:GetService("DataStoreService"):GetDataStore("PurchaseHistory")

GEMSID = 33818042

MarketplaceService.ProcessReceipt = function(receiptInfo)
    local playerProductKey = "player_" .. receiptInfo.PlayerId .. "_product_" .. receiptInfo.ProductId
    local numberBought = ds:IncrementAsync(playerProductKey, 1)
    for i,v in pairs (game.Players:GetChildren()) do
        if v.userId == receiptInfo.PlayerId then
            if receiptInfo.ProductId == GEMSID then


                lds = v:FindFirstChild("leaderstats")
                if lds ~= nil then
                    cs = lds:FindFirstChild("Gems") 
                    if cs ~= nil then
                        cs.Value = cs.Value + 100
                    end
                end
            end
        end
    end
    return Enum.ProductPurchaseDecision.PurchaseGranted     
end
Ad
Log in to vote
0
Answered by 8 years ago

A few things: If you want to get a player from their userId, use this function.

Your if statement on Line 19 should be all one line. It looks really confusing otherwise.

Put parentheses around your arguments, otherwise it again looks confusing and isn't really the proper way to do things.

Now, to answer your question: It looks like to me you forgot to put a GetChildren() when you tried to index the players class. I don't see else anything wrong with your code, but I recommend you use the method provided by ROBLOX above, and if you still don't get your gems, it most likely is something with your leader board.

Answer this question