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

HealthBar won't resize itself based on player's health, what's wrong?

Please note that my game is Filtered Enabled and there is a remote event I'm using to apply changes.

P.S. There are no errors in output either.

--//LOCALSCRIPT

--//Variables
local plr = game.Players.LocalPlayer
local chr = plr.Character
local hum = chr.Humanoid
local bar = script.Parent.Parent
local hbar = script.Parent
local htxt = script.Parent.TextLabel
repeat wait() until plr.chr
local healthMath = hum.Health / (hum.MaxHealth)
local replicatedStorage = game:GetService("ReplicatedStorage")
local healthEvent = replicatedStorage.healthEvent

--//Booleans
game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Health, false)

--//Scripting
plr.hum.HealthChanged:Connect(function(health)
	healthEvent:FireServer()
end)



--//SCRIPT

--// Variables
local replicatedStorage = game:GetService("ReplicatedStorage")
local healthEvent = replicatedStorage.healthEvent

--// Scripting

local function onHealthChanged(player)
	local hum = player.Character:WaitForChild("Humanoid")
	local healthMath = hum.Health / (hum.MaxHealth)
	local hBar = player.PlayerGui.healthAssets.healthBar
	hBar:TweenSize(UDim.new(healthMath, 0, 1, 0), "Out", "Sine", .2)
end

There are no errors in output either.

1 comment

0

Server scripts can't handle client-sided stuff sadly. :/ You gotta use a LocalScript for that.

1 answer

✓ Accepted answer

Woah woah WOAH. Pretty sure you messed the order up. Why on earth does the server handle it? You can do all that in a local script with a few lines Simply change the size based on the players health. Player1 doesnt need to know what size Player 2's health gui is. Only the health. Not exploiter proof, people could exploit the gui, but that doesnt affect gameplay. This example is intended to work in a local script, inside Frame,2 which is inside Frame1. Frame 1 would be the background of the loading bar, Frame 1 being the loading bar.

while wait(1) do
	script.Parent.Size = Udim2.new(1, 0, game.Players.LocalPlayer.Character.Humanoid.Health/MaxHealth, 0)
end

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