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

Issue calling a function the second time in a row?

Asked by
Bman8765 270 Moderation Voter
10 years ago

Okay so I have script that will make a random message show up on all the player's screens that are online at the time but the problem is if the user purchases this product 2 times in a row (it's a dev product) it will start to either not change the message text or it will make double of it. If you have any suggestions on how to work this please tell me. If you have any questions about it just ask me, I'll give you all the info you need.

P.S, the script works fine if I remove purchaser.Name but that kinda ruins the point of buying this product!

P.P.S, I can't provide any output because this has to be tested in a real roblox game, it's a dev product!

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

local function shoutout(purchaser)
    for i, player in ipairs(game.Players:GetChildren()) do
        if player.Character and player.Character:FindFirstChild("Torso") then
            end
            local clone = game.Lighting.GoodCard:Clone()
            local randomsayingnum = math.random(1, 4)
            if randomsayingnum == 1 then
                clone.Message.Text = purchaser.Name " is an MLG PRO, just sayin..."
            elseif randomsayingnum == 2 then
                clone.Message.Text = "Say in-chat HI " .. purchaser.Name .. " over and over again until your fingers are bleeding!"
            elseif randomsayingnum == 3 then
                clone.Message.Text = "Go send " ..purchaser.Name .. " a friend request because he da bozz!"
            elseif randomsayingnum == 4 then
                clone.Message.Text = "Shoutout to " ..purchaser.Name .. " for being so awesome and skilled, you should be more like him!"
            end
            clone.Parent = player.PlayerGui.MainScreen
        wait()
    end
    wait(1)
end
MarketplaceService.ProcessReceipt = function(receiptInfo) 
    for i, player in ipairs(game.Players:GetChildren()) do
        if player.userId == receiptInfo.PlayerId then
            if receiptInfo.ProductId == doublecoinsId then
                player.PlayerGui.MainScreen.PlayerValues.HasCoinBooster.Value = true
                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
                shoutout(player)
            end
        end
    end 
    return Enum.ProductPurchaseDecision.PurchaseGranted     
end

1 answer

Log in to vote
1
Answered by
Perci1 4988 Trusted Moderation Voter Community Moderator
10 years ago

Line 12, you forgot the two dots necessary to concatenate strings

clone.Message.Text = purchaser.Name .. " is an MLG PRO, just sayin..."
Ad

Answer this question