Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Adding points on touch?

So I have a brick where you step on it and it rewards points. The problem is that if I set it to add 10 points, it adds 10 points extremely rapidly. I can't seem to get to add 10 points and then that's it.

Here is the code:

amnt = 10
function onTouched(part)
	local h = part.Parent:findFirstChild("Humanoid")
	if (h~=nil) then
		local thisplr = game.Players:findFirstChild(h.Parent.Name)
		if (thisplr~=nil) then
			local stats = thisplr:findFirstChild("leaderstats")
			if (stats~=nil) then
				local score = stats:findFirstChild("Points")
				if (score~=nil) then
					score.Value = score.Value + amnt
				end
			end
		end
	end
end

script.Parent.Touched:connect(onTouched)

1 answer

✓ Accepted answer

The following code will add 10 points to the player's score, and will not do so for the same player when they touch the brick again. Keep in mind that if the player leaves the server and rejoins the same one, then they will not be able to receive points from the part anymore. To combat this, you can use the PlayerRemoving event and remove the player from the table, but I'll leave that up to you.

local amnt = 10 --the amount of points the player will receive
local tab = {} --create a table. This will serve as a blacklist to players who already received points.

script.Parent.Touched:connect(function(part)--run the following code when the script's parent is touched
	local player = game:GetService("Players"):GetPlayerFromCharacter(part.Parent)
	if tab[part.Parent.Name] or not player then return end --terminate the code if the player is blacklisted or does not exist
	tab[player.Name] = true --blacklist the player
	local stats = player:FindFirstChild("leaderstats") --define stats
	local score = stats:FindFirstChild("Points") --define score
	if not stats or not score then return end --if neither exist, then terminate the code
	score.Value = score.Value + amnt --give the player points
end)

This discussion is preserved as it was. New answers, comments, and votes are closed.