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

[Solved] Why is the collectable coin not working?

Asked by 4 years ago
Edited 4 years ago

I was trying to make a collectable ring, everything was working. Once I collect the ring, it turns invisible. However the ring is not turning opaque again even though I have wrote the script to turn it's transparency to 0.

There are no errors in the output either

Here is the code:

01local db = true
02script.Parent.Touched:Connect(function(hit) -- The player hits the part
03    if hit.Parent:FindFirstChild("Humanoid") ~= nil then -- Just to check if its not nil
04        if db == true then -- Just to check if the db is true
05            db = false
06            local player = game.Players:GetPlayerFromCharacter(hit.Parent) -- Getting the player
07            player.leaderstats.Rings.Value = player.leaderstats.Rings.Value + 1 -- Giving Currency
08            script.Parent.Transparency = 1 -- Making it invisible
09            script.Parent.CanCollide = false -- Now the player can walk through the ring
10            script.Parent.Bubble:Play() -- Playing the sound
11            wait(2)
12-- Respawning the ring:
13            db = true
14            script.Parent.Transparency = 0
15            script.Parent.CanCollide = true
16        end
17    end
18end)

Anything I can do?

0
any error? or stuffs? xXLegendGamerz16Xx 231 — 4y
0
script.Parent.Touched:Connect(function(hit) local player = hit.Parent:FindFirstChild("Humanoid") local plr = game.Players:GetPlayerFromCharacter(hit.Parent) if plr.leaderstats.Coins.Value >= 0 then wait() script.Disabled = true script.Parent.Transparency = 1 script.Parent.CanCollide = false plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value +1 wait(1) script.Parent.Transpar MattVSNNL 620 — 4y
0
Thanks a lot! It worked! CoinWield 47 — 4y

2 answers

Log in to vote
-1
Answered by
MattVSNNL 620 Moderation Voter
4 years ago
Edited 4 years ago
01script.Parent.Touched:Connect(function(hit)
02    local player = hit.Parent:FindFirstChild("Humanoid")
03    local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
04    if plr.leaderstats.Coins.Value >= 0 then
05        wait()
06        script.Disabled = true
07        script.Parent.Transparency = 1
08        script.Parent.CanCollide = false
09        plr.leaderstats.Coins.Value = plr.leaderstats.Coins.Value +1
10        wait(1)
11        script.Parent.Transparency = 0
12        script.Parent.CanCollide = true
13        script.Disabled = false
14    end
15end)
Ad
Log in to vote
0
Answered by 4 years ago

The script works fine for me, It's either 1: Your sound is probably misspelled or something. 2: You do not have leader stats or the leader stats is misspelled again.

0
The sound isn't misspelled and I can confirm that because the sound works. The leaderstats isn't misspelled either. What I tried was to remove the if statement " if hit.Parent:FindFirstChild("Humanoid") ~= nil then". Once I removed that, I got an error! It says "attempt to index nil with leaderstats". I believe the way to fix this is to change how you get the player. (Next Comment) CoinWield 47 — 4y
0
So, Is there a way to get the player when he/she touches a part? I used game.Players:GetPlayerFromCharacter(hit.Parent), but if that causes an error, there must be another way. CoinWield 47 — 4y

Answer this question