I managed to make a working hat giver script for a part. When you stood on the part, it would clone the hat from Lighting and set it's parent to the character. This worked. When trying to make it into a GUI, it clones the hat sets it's parent to player.Character, but it isn't on the character's head. Here is the LocalScript in the TextButton:
local player = game.Players.LocalPlayer
local button = script.Parent
button.MouseButton1Click:connect(function()
local hat = game.Lighting.TopHat:Clone()
hat.Parent = player.Character
end)

1 comment
Worked, thanks!