✓ Accepted answer
Local objects, like GUIs that get copied into each player's PlayerGui, don't exist on the server. They only exist locally on the client.
If you try to send a reference to them to the server (in a RemoteEvent or RemoteFunction) that object will be replaced with nil.
That is what's happening here.
It seems very strange that you would want to send a local object in GUI to the server... What is the meaning of the "GetTool" event? What kind of information does it need, and what kind of action does it take?
Probably you should instead indicate a tool in some shared service, like ReplicatedStorage.
local tool = game.ReplicatedStorage:WaitForChild("Tool")
game.Workspace.Events.GetTool:FireServer(tool)
1 comment
LOL, I have the same exact question!