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

Scoring system more than 1 onTouch needed but cant figure it out?

So I finally finished my scoring system and data saving, but when I put more than 1 Gem down it doesn't work. And I can't find out a way to make more than 1 onTouch without having to name them 1 by 1 which in the end wouldn't work.

local Gems = game.Players.LocalPlayer.leaderstats.Gems



function onTouched(hit)
if game.Players:GetPlayerFromCharacter(hit.Parent) == game.Players.LocalPlayer then
Gems.Value = Gems.Value + 1
hit:Destroy()
print("Ads")
end
end

game.Workspace.Gem.Touched:connect(onTouched)



2 answers

✓ Accepted answer

Hey Retro,

Why don't you try a server script inside each of the gems? Inside the gem, you'd put a script similar to the local one. It would go something like this:

function onTouched(hit)
	if game.Players:GetPlayerFromCharacter(hit.Parent) then -- if the person exists then
		local plr = game.Players:GetPlayerFromCharacter(hit.Parent) -- just a var
		local Gems = plr.leaderstats.Gems -- another var
		Gems.Value = Gems.Value + 1 -- +1 val
		print("Ads")
		script.Parent:Destroy() -- instead of hit.destroy, that'd destroy a body part. you mean script.Parent:Destroy()?
	end
end

script.Parent.Touched:connect(onTouched)

There is a few errors plus the whole source was changed to fit a server script inside of the gem.

local Gems = game.Players.LocalPlayer.leaderstats.Gems
function onTouched(hit, gemz)
if game.Players:GetPlayerFromCharacter(hit.Parent) == game.Players.LocalPlayer then
Gems.Value = Gems.Value + 1
gemz:Destroy()
print("Ads")
end
end
for i,v in pairs(game.Workspace:GetChildren()) do
if v.ClassName == "Part" then
if v.Name == "Gem" then
game.Workspace.Gem.Touched:connect(onTouched(v)
end
end
end


1 comment

0

Didn't work :P

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