I am currently scripting a game where you collect a bunch of Marbles and each time you collect a marble, there is a Textlabel inside the Players Gui called 'Number' and its text will go up by 1. So far this bit works fine. However I am implementing a tool that allows you to swap you and another players marble number. I plan to do this by colliding the tool's handle with another player, and switching their TextLabel's text values. This is the script I've placed inside the tool's handle.
script.Parent.Touched:connect(onTouched) function onTouched(hit) if hit.Parent:findFirstChild("Humanoid") then local h = hit.Parent:findFirstChild("Humanoid") if h ~= nil then local player = game.Players:GetPlayerFromCharacter(h.Parent) local salad = player.PlayerGui["Marble Counter"].Number.Text local dog = script.Parent.Parent.Parent:FindFirstChild("Humanoid") if dog ~= nil then local player1 = game.Players:GetPlayerFromCharacter(dog.Parent) local salad1 = player1.PlayerGui["Marble Counter"].Number.Text salad = salad1 salad1 = salad end script.Parent.Parent:Destroy() end end end
Sorry if this script is messy I'm relatively new to scripting. The Output shows that when I pick up the tool and hold it there is 'Attempt to connect failed: Passed value is not a function' and when I collide with another player it outputs 'attempt to call a nil value'
If anyone knows where in this script things are going wrong or a different method of writing this that works it would be much appreciated.