I am trying to make a hat selection gui but it doesn't work! heres the script.
local array = {"hat1","hat2","hat3","hat4"} local currentPosition = 1 local char = game.Players.LocalPlayer.CharacterAdded:wait() local hat1 = game.ReplicatedStorage:FindFirstChild("BlackFauxhawk") local hat2 = game.ReplicatedStorage:FindFirstChild("Fauxhawk") local hat3 = game.ReplicatedStorage:FindFirstChild("LongHairHeadBandBrown") local hat4 = game.ReplicatedStorage:FindFirstChild("MensBorderBeanie") script.Parent.Right.MouseButton1Click:connect(function() currentPosition = currentPosition < #array and currentPosition + 1 or currentPosition local cool = (array[currentPosition]):Clone() cool.Parent = char end) script.Parent.Left.MouseButton1Click:connect(function() currentPosition = currentPosition > 1 and currentPosition - 1 or currentPosition local cool = (array[currentPosition]):Clone() cool.Parent = char end)
What you seem to be doing wrong is this: 1) Your defining your values in your arrays as strings, however you can only Clone an object.
I see what your trying to do though, you define your hats afterwards. So secondly, you need to change that around
local hat1 = game.ReplicatedStorage:FindFirstChild("BlackFauxhawk") local hat2 = game.ReplicatedStorage:FindFirstChild("Fauxhawk") local hat3 = game.ReplicatedStorage:FindFirstChild("LongHairHeadBandBrown") local hat4 = game.ReplicatedStorage:FindFirstChild("MensBorderBeanie") local array = {...}
Then, in your array, remove the "
s.
local array = {hat1,hat2,hat3,hat4}
So your script should finish of as this:
local currentPosition = 1 local char = game.Players.LocalPlayer.CharacterAdded:wait() local hat1 = game.ReplicatedStorage:FindFirstChild("BlackFauxhawk") local hat2 = game.ReplicatedStorage:FindFirstChild("Fauxhawk") local hat3 = game.ReplicatedStorage:FindFirstChild("LongHairHeadBandBrown") local hat4 = game.ReplicatedStorage:FindFirstChild("MensBorderBeanie") local array = {hat1,hat2,hat3,hat4} script.Parent.Right.MouseButton1Click:connect(function() currentPosition = currentPosition < #array and currentPosition + 1 or currentPosition local cool = (array[currentPosition]):Clone() cool.Parent = char end) script.Parent.Left.MouseButton1Click:connect(function() currentPosition = currentPosition > 1 and currentPosition - 1 or currentPosition local cool = (array[currentPosition]):Clone() cool.Parent = char end)
And hopefully that works!