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

How to add a leader stat once when you touch a block?

Asked by 7 years ago

So I have a coin script that gives you one coin when you step on it. I made a gamepass you can buy where you get 3 coins every time you step on a coin. (A coin trippler). Although I get 9 coins instead of 3.

local db = true
local passId = 297078187

script.Parent.Touched:connect(function(obj)
    local player = game.Players:FindFirstChild(obj.Parent.Name)
    if player and db then
        db = false
        local coins = player.leaderstats.Coins
        workspace.Sounds.CoinSound:Play()
        for i = 0, 1, .1 do
            script.Parent.Transparency = i
            wait()
        end
        local coins = player.leaderstats.Coins
        if game:GetService("MarketplaceService"):PlayerOwnsAsset(player, passId) then
            coins.Value = coins.Value + 3
        else
            coins.Value = coins.Value + 1
        end
        script.Parent:Destroy()
        db = true
    end
end)
---put this in workspace

Any idea how this happens? Thanks.

0
I don't think there is a error and you can touch the coin giver a lot of times so 9 coins wouldn't be a problem in my opinion. User#18043 95 — 7y
0
Yes I see that but when I touch it once it gives me nine. cooldrewbie 94 — 7y

1 answer

Log in to vote
1
Answered by 7 years ago

You should've done local db = false I also Reccomend WaitForChild()

local db = false
local passId = 297078187

script.Parent.Touched:connect(function(obj)
    local player = game.Players:GetPlayerFromCharacter(obj)
    if player and db == false then
        db = true
        local coins = player.leaderstats.Coins
        workspace.Sounds.CoinSound:Play()
        for i = 0, 1, 0.1 do
            script.Parent.Transparency = i
            wait()
        end
        --local coins = player.leaderstats.Coins Why declare the same variable twice??
        if game:GetService("MarketplaceService"):PlayerOwnsAsset(player, passId) then
            coins.Value = coins.Value + 3
        else
            coins.Value = coins.Value + 1
        end
        script.Parent:Destroy()
        db = false
    end
end)
---put this in workspace

Hopefully this would help you in this script :)

Ad

Answer this question