This is part of a local script
--#Basic player variables
local Character
local Human
local HumanRoot
--#Original values of stuff
local OGravity
local OWalkSpeed
local OJumpPower
local _Delay = false
--#Assigning variables
game.Players.LocalPlayer.CharacterAdded:Connect(function(char)
Character = char
Human = char:WaitForChild("Humanoid")
HumanRoot = char:WaitForChild("HumanoidRootPart")
OWalkSpeed = Human.WalkSpeed
OJumpPower = Human.JumpPower
OGravity = workspace.Gravity
end)
--#Make sure the player exists
repeat wait() until Character ~= nil and HumanRoot ~= nil and Human ~= nil
the script does not make it past the repeat until line nor does it output an error. The last time i ran this script(4/9/21) it did work but now it no longer does.

4 comments
i used repeat until because when i tried to use the variables they would return as nil otherwise i wouldnt have used repeat until
and the only reason i cheked all of the variables is to make sure they are assigned to since the variables will be used immediately after
also in my opinion it looks better to have repeat until outside of the character added function
in my opinion it looks better inside