Remote Event isn't firing

Script:

game.ReplicatedStorage.Update_Event.OnServerEvent:Connect(function(Player)
	local Main_UI = Player:WaitForChild("PlayerGui"):WaitForChild("Main")
	local Buttons_UI =  Player:WaitForChild("PlayerGui"):WaitForChild("Buttons_UI")

	local Level_Bar = Buttons_UI:WaitForChild("Level_Bar")
	local Bar = Level_Bar:WaitForChild("Bar")
	local Required_Strength = Level_Bar:WaitForChild("Required")
	local Level = Bar:WaitForChild("Level")
	
	
	local SS = game:GetService("ServerStorage")
	local Effect = SS:WaitForChild("Effect")
	
	
	local RS = game:GetService("ReplicatedStorage")
	local Abbreviate = require(RS:WaitForChild("Abbreviation"))
	
	
	local Player_Level = Player.leaderstats:WaitForChild("Level")
	local Player_EXP = Player.Handler:WaitForChild("EXP")
	local Player_RS = Player.Handler:WaitForChild("RequiredEXP")
	local Player_Gems = Player.leaderstats.Gems
	local Player_Multiplier = Player:WaitForChild("Handler"):WaitForChild("Multiplier")
	
	Player_EXP.Changed:Connect(function(Done)
		print("changed")
			if Done then
				if Player_EXP.Value >= Player_RS.Value then
				print("working")
				--GOOD TO GO
				local randoms = {
					Color3.fromRGB(166, 56, 255);
					Color3.fromRGB(25, 217, 255);
					Color3.fromRGB(72, 236, 225);
					Color3.fromRGB(72, 236, 225);
					Color3.fromRGB(72, 2, 225);
					Color3.fromRGB(122, 236, 1);
					Color3.fromRGB(72, 80, 225);
					Color3.fromRGB(206, 65, 22);

				}
				if Player.Character.Head:FindFirstChild("Effect") then
					Player.Character.Head:FindFirstChild("Effect"):Destroy()
				end
				
				--local ran = randoms[math.random(1, randoms)]
				--print(ran)
				
				Effect:Clone().Parent = Player.Character.Head
				Effect.Color = randoms[math.random(1, #randoms)]
				
				
					Player_RS.Value = Player_EXP.Value * 2.5
					Player_Level.Value = Player_Level.Value + 1
					Player_Multiplier.Value = Player_Multiplier.Value + 1.5
					Player_Gems.Value += 2.5
					Player_EXP.Value = 0
					Level_Bar.Multiplier.Text = "Next Multiplier: x".. Abbreviate.abbreviate(Player_Multiplier.Value + 1.5)
					Level_Bar.Current_Multiplier.Text = "Current Multiplier: x"..Abbreviate.abbreviate(Player_Multiplier.Value)
					Message_Event:FireAllClients(Player.Name, Player_Level.Value)

				--pl
					Player:WaitForChild("PlayerGui").Buttons_UI.Level_Bar.Bar:TweenSize(UDim2.new(Player_EXP.Value/Player_RS.Value, 0, 1, 0))
			end
		end
	end)
	
	Level.Text = "Level: ".. Abbreviate.abbreviate(Player_Level.Value)
	Required_Strength.Text = Abbreviate.abbreviate(Player_EXP.Value)..'/'..Abbreviate.abbreviate(Player_RS.Value)
	
	
	--print(Abbreviate(Player_Level.Value))
end)

Local Script:

while true do
   task.wait(0.5)
   game.ReplicatedStorage.Update_Event:FireServer()
end

It used to work idk what even happened now its so weird nothing even prints
about the bar its in another script thats why it works

video: WLS - Roblox Studio (gyazo.com)

Wait so what is this remote event for?

Also is the Player_EXP value changing?