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

Dev Product Issue? [UNSOLVED]

Asked by
Bman8765 270 Moderation Voter
9 years ago

Okay, so I have an item in my game that will give you a random shout out(message) that will show up on every player's screen when you purchase it for a certain amount of robux. Sure it's cheesy or stupid, but I'm not here for your criticism I just want help. So it works but if the player buys it 2 times in a row it will get all glitchy. If another user buys it, it works fine but the problem is if the same user buys a shout out 2 times in a row the shout out will glitch and give 2 messages and 1 of the messages will say the default text (meaning it has not changed the message on the text). I'm a little bad at describing things so if you have any questions just ask. I don't think it's a problem with the variables because everything works I just think there's something wrong and I can't seem to find a solution.

The script (found in workspace):

local MarketplaceService = Game:GetService("MarketplaceService")
local doublecoinsId = 21809336
local shoutoutId = 21812513

MarketplaceService.ProcessReceipt = function(receiptInfo) 

    -- find the player based on the PlayerId in receiptInfo
    for i, player in ipairs(game.Players:GetChildren()) do
        if player.userId == receiptInfo.PlayerId then


            -- check which product was purchased
            if receiptInfo.ProductId == doublecoinsId then

                -- handle purchase. In this case we are healing the player.
                player.PlayerGui.MainScreen.PlayerValues.HasCoinBooster.Value = true
                -- more feedback for the player.
                player.PlayerGui.MainScreen.Alert.Visible = true
                player.PlayerGui.MainScreen.Alert.Message.Text = "Purchase successful, the coinbooster will last until you die or until the next game ends!"
            elseif receiptInfo.ProductId == shoutoutId then
                for i, playeralert in ipairs(game.Players:GetChildren()) do
                    if player.Character and player.Character:FindFirstChild("Torso") then
                    end
                    local clone = game.Lighting.GoodCard:Clone()
                    clone.Parent = playeralert.PlayerGui.MainScreen
                    local randomsayingnum = math.random(1, 4)
                    if randomsayingnum == 1 then
                        clone.Message.Text = player.Name " is an MLG PRO, just sayin..."
                    elseif randomsayingnum == 2 then
                        clone.Message.Text = "Say in-chat HI " .. player.Name .. " over and over again until your fingers are bleeding!"
                    elseif randomsayingnum == 3 then
                        clone.Message.Text = "Go send " ..player.Name .. " a friend request because he da bozz!"
                    elseif randomsayingnum == 4 then
                        clone.Message.Text = "Shoutout to " ..player.Name .. " for being so awesome and skilled, you should be more like him!"
                    end
                    wait()
                end
            end
        end
    end 
    return Enum.ProductPurchaseDecision.PurchaseGranted     
end

Answer this question