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.
