Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Why wont this mana and health bar script work?

local plr = game.Players.LocalPlayer
local pmana = plr.Mana
local Humanoid = plr.Character:WaitForChild("Humanoid")
local health = script.Parent.Health
local healthShade = health.Shade
local mana = script.Parent.Mana
local manaShade = mana.Shade
local maxHealth = Humanoid.MaxHealth
local phealth = Humanoid.Health
wait(2)

function HealthChange()
	health.Size = UDim2.new(0,phealth/maxHealth,0,30)
	healthShade.Size = UDim2.new(0,phealth/maxHealth,0,2)
end

function ManaChange()
	mana.Size = UDim2.new(pmana/100,0,0,30)
	manaShade.Size = UDim2.new(pmana/100,0,0,2)
	repeat
		wait(0.5)
		mana.Value = mana.Value + math.random(1,3)
	until mana.Value == 100
end

Humanoid.Changed:connect(HealthChange)
pmana.Value.Changed:connect(ManaChange)

When the health changes the bar moves it just doesnt move the right way. Mana does not work at all.

1 comment

1 answer

✓ Accepted answer
local plr = game.Players.LocalPlayer
local pmana = plr:WaitForChild('Mana') --Wait for these as they won't load immediately.
plr.CharacterAdded:connect(function(character) --Will wait till the character is loaded
	local Humanoid = plr.Character:WaitForChild("Humanoid")
	local health = script.Parent.Health --Wait for these as they won't load immediately.
	local healthShade = health.Shade
	local mana = script.Parent.Mana
	local manaShade = mana.Shade
	local maxHealth = Humanoid.MaxHealth
	local phealth = Humanoid.Health
	
	Humanoid.HealthChanged:connect(function() --Health changed function =)
	    health.Size = UDim2.new(phealth/maxHealth,0,0,30) --Switched the 0 and health math
	    healthShade.Size = UDim2.new(phealth/maxHealth,0,0,2)  --Switched the 0 and health math
	--If you want to make this move smoothly, you could use TweenSize 
	end)
	
	pmana.Changed:connect(function() --Just used the value's name and .changed.
	    mana.Size = UDim2.new(pmana/100,0,0,30)
	    manaShade.Size = UDim2.new(pmana/100,0,0,2)
	   --[[ repeat
	        wait(0.5)
	        mana.Value = mana.Value + math.random(1,3)
	    until mana.Value == 100]]-- --Use this else where.
	--If you want to make this move smoothly, you could use TweenSize 
	end)
end)

This discussion is preserved as it was. New answers, comments, and votes are closed.