I have been getting word that this works only once, but it seems that it should work multiple times.
debounce=false script.Parent.Touched:connect(function(hit) print(hit.Name) plr=game.Players:GetPlayerFromCharacter(hit.Parent) if plr then print(plr.Name) if debounce==true then elseif debounce==false then debounce=true local PointsService = Game:GetService("PointsService") local pointsToAward = PointsService:GetAwardablePoints() if ( pointsToAward < 0 ) then print("No Points left") elseif ( pointsToAward > 0 ) then pcall(function() if Game:GetService("GamePassService"):PlayerHasPass(plr, 160676880) then PointsService:AwardPoints(plr.userId, 50) plr.PlayerGui.CollectSound:Play() else PointsService:AwardPoints(plr.userId, 25) plr.PlayerGui.CollectSound:Play() wait(5) debounce=false end end) end -- Bind function to when points are successfully awarded end end end)
debounce=false script.Parent.Touched:connect(function(hit) if then if debounce==true then elseif debounce==false then debounce=true if then elseif then pcall(function() if then else debounce=false end end) end end end end)
After removing the actual content of the script, you can clearly see that debounce
will not be set back to false
unless a certain set of criterion is matched every time. If for one time it isn't, it never works again. You should be setting debounce
to false
in the same block that it's being set to true. That would look more like this:
... debounce=true if ... then ... end debounce=false ...