I have a localscript inside a Frame, in a ScreenGUI inside the player's playerGUI. It is supposed to make the frame's size the player's health. I have it like follows:
-- Part 1 local player = game.Players.LocalPlayer --The local player. local humanoid = player.Character:WaitForChild("Humanoid") --Yields (makes the script wait) until the apples object becomes available. script.Parent.Size = {0, math.floor(humanoid.Health)},{0, 5} humanoid.Changed:connect(function() --Connects a function to an event. Known as an anonymous function (as it has no direct identifier.) script.Parent.Size = {0, math.floor(humanoid.Health)},{0, 5} --Sets the Text property of the script's parent to "Apples: " then the apples variable's value. The two dots are used for string concatenation (merging of values to form a string.) -- Part 1 doesn't work -- Part 2 if humanoid.Health >= 75 then script.Parent.BackgroundColor3.r=(0/255) script.Parent.BackgroundColor3.g=(170/255) script.Parent.BackgroundColor3.b=(127/255) end elseif humanoid.Health >= 50 and humanoid.Health <= 74 then script.Parent.BackgroundColor3.r=(47/255) script.Parent.BackgroundColor3.g=(170/255) script.Parent.BackgroundColor3.b=(61/255) end elseif humanoid.Health >= 25 and humanoid.Health <= 49 then script.Parent.BackgroundColor3.r=(170/255) script.Parent.BackgroundColor3.g=(157/255) script.Parent.BackgroundColor3.b=(82/255) end elseif humanoid.Health >= 0 and humanoid.Health <= 24 then script.Parent.BackgroundColor3.r=(170/255) script.Parent.BackgroundColor3.g=(80/255) script.Parent.BackgroundColor3.b=(80/255) end -- Haven't even tested part 2 but the first elseif is underlined in red saying: expected enf next to function line 4, got 'elseif' end)
Thanks.
This is the new script: (It only does the colour change once, and the Size once, then doesn't work)
local player = game.Players.LocalPlayer --The local player. local humanoid = player.Character:WaitForChild("Humanoid") script.Parent.Size = UDim2.new( 0, math.floor(humanoid.Health),0, 5) humanoid.Changed:connect(function() script.Parent.Size = UDim2.new(0, math.floor(humanoid.Health),0, 5) if humanoid.Health >= 75 then script.Parent.BackgroundColor3 = Color3.new(0/255, 170/255, 127/255) elseif humanoid.Health >= 50 and humanoid.Health <= 74 then script.Parent.BackgroundColor3.Color3 = Color3.new(47/255, 170/255, 61/255) elseif humanoid.Health >= 25 and humanoid.Health <= 49 then script.Parent.BackgroundColor3 = Color3.new(170/255, 157/255, 82/255) elseif humanoid.Health >= 0 and humanoid.Health <= 24 then script.Parent.BackgroundColor3 = Color3.new(170/255, 80/255, 80/255) end end)
That's because you did if,end,elseif,end... NUUH!!! It should be if, elseif, else, end. Also, you forgot the UDim2.new() after the = for each rezise command. I think this should work now.
local player = game.Players.LocalPlayer --The local player. local humanoid = player.Character:WaitForChild("Humanoid") script.Parent.Size = UDim2.new( 0, math.floor(humanoid.Health),0, 5) humanoid.Changed:connect(function() script.Parent.Size = Udim2.new(0, math.floor(humanoid.Health),0, 5) if humanoid.Health >= 75 then script.Parent.BackgroundColor3.r=(0/255) script.Parent.BackgroundColor3.g=(170/255) script.Parent.BackgroundColor3.b=(127/255) elseif humanoid.Health >= 50 and humanoid.Health <= 74 then script.Parent.BackgroundColor3.r=(47/255) script.Parent.BackgroundColor3.g=(170/255) script.Parent.BackgroundColor3.b=(61/255) elseif humanoid.Health >= 25 and humanoid.Health <= 49 then script.Parent.BackgroundColor3.r=(170/255) script.Parent.BackgroundColor3.g=(157/255) script.Parent.BackgroundColor3.b=(82/255) elseif humanoid.Health >= 0 and humanoid.Health <= 24 then script.Parent.BackgroundColor3.r=(170/255) script.Parent.BackgroundColor3.g=(80/255) script.Parent.BackgroundColor3.b=(80/255) end end)