So I scripted code that would give the player money once they collect it. I noticed however if you were to hold a tool and it would come in contact with the coin, it would still give the player the money but it would return [Workspace.Coins.Coin.Script:4: attempt to index nil with ‘leaderstats’]. I think it has something to do with the tool touching the coin instead of the player first. Any ideas how to make it where the script only checks if the player touched it. Same problem with a door script I have.
script.Parent.Touched:Connect(function(hit)
local player = hit.Parent:FindFirstChild("Humanoid")
local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
if plr.leaderstats.Cash.Value >= 0 then
wait()
script.Disabled = true
script.Parent.Transparency = 1
script.Parent.CanCollide = false
plr.leaderstats.Cash.Value = plr.leaderstats.Cash.Value +1
wait(1)
script.Parent.Transparency = 0
script.Parent.CanCollide = true
script.Disabled = false
end
end)