anti fall
Key Required

anti fall

Tower of Hellwie_134wie_134 2K views 1.9K executesUpdated May 27, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•201 lines (5240 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer

---------------------------------------------------
-- SETTINGS
---------------------------------------------------

local FALL_DISTANCE = 25
local LOCK_TIME = 0.75

---------------------------------------------------
-- VARIABLES
---------------------------------------------------

local character
local humanoid
local rootPart

local enabled = true
local teleporting = false

local lastSafeCFrame = nil
local highestY = nil

---------------------------------------------------
-- UI (UNCHANGED)
---------------------------------------------------

local gui = Instance.new("ScreenGui")
gui.Name = "FallReturnUI"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 145, 0, 38)
frame.Position = UDim2.new(0, 15, 0, 15)
frame.BackgroundColor3 = Color3.fromRGB(38, 38, 38)
frame.BorderSizePixel = 0
frame.Parent = gui

Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 7)

local button = Instance.new("TextButton")
button.Size = UDim2.new(1, -8, 1, -8)
button.Position = UDim2.new(0, 4, 0, 4)
button.BackgroundColor3 = Color3.fromRGB(58, 58, 58)
button.TextColor3 = Color3.new(1,1,1)
button.Font = Enum.Font.GothamBold
button.TextSize = 13
button.BorderSizePixel = 0
button.Parent = frame

Instance.new("UICorner", button).CornerRadius = UDim.new(0, 6)

local function updateButton()
	button.Text = enabled and "Fall Return : ON" or "Fall Return : OFF"
end

updateButton()

button.MouseButton1Click:Connect(function()
	enabled = not enabled
	updateButton()
end)

---------------------------------------------------
-- CHARACTER
---------------------------------------------------

local function setupCharacter(char)
	character = char
	humanoid = char:WaitForChild("Humanoid")
	rootPart = char:WaitForChild("HumanoidRootPart")

	lastSafeCFrame = rootPart.CFrame
	highestY = rootPart.Position.Y

	---------------------------------------------------
	-- 🔥 HARD RESET (FIX PERMA LOCK BUG)
	---------------------------------------------------
	teleporting = false
end

if player.Character then setupCharacter(player.Character) end
player.CharacterAdded:Connect(setupCharacter)

---------------------------------------------------
-- GROUND CHECK (UNCHANGED)
---------------------------------------------------

local function isGrounded()
	local rayOrigin = rootPart.Position
	local rayDirection = Vector3.new(0, -6, 0)

	local params = RaycastParams.new()
	params.FilterDescendantsInstances = {character}
	params.FilterType = Enum.RaycastFilterType.Blacklist

	return workspace:Raycast(rayOrigin, rayDirection, params)
end

---------------------------------------------------
-- MAIN
---------------------------------------------------

RunService.RenderStepped:Connect(function()

	if not enabled then return end
	if not character or not humanoid or not rootPart then return end

	---------------------------------------------------
	-- 🔥 SAFETY: IF HUMANOID BROKE, FORCE UNLOCK STATE
	---------------------------------------------------
	if humanoid.Health <= 0 then
		teleporting = false
		return
	end

	---------------------------------------------------
	-- PREVENT DOUBLE TRIGGERS
	---------------------------------------------------
	if teleporting then return end

	local currentY = rootPart.Position.Y
	local state = humanoid:GetState()

	---------------------------------------------------
	-- SAVE SAFE POSITION
	---------------------------------------------------

	local groundHit = isGrounded()

	if groundHit and state ~= Enum.HumanoidStateType.Freefall then
		highestY = currentY

		lastSafeCFrame = CFrame.new(
			groundHit.Position + Vector3.new(0, 3, 0)
		) * CFrame.Angles(
			0,
			math.rad(rootPart.Orientation.Y),
			0
		)
	end

	---------------------------------------------------
	-- FALL DETECT
	---------------------------------------------------

	if state == Enum.HumanoidStateType.Freefall then

		local fallenDistance = highestY - currentY

		if fallenDistance >= FALL_DISTANCE then

			teleporting = true

			---------------------------------------------------
			-- LOCK
			---------------------------------------------------

			local oldWalkSpeed = humanoid.WalkSpeed
			local oldJumpPower = humanoid.JumpPower
			local oldAutoRotate = humanoid.AutoRotate

			humanoid.WalkSpeed = 0
			humanoid.JumpPower = 0
			humanoid.AutoRotate = false

			rootPart.Anchored = true

			---------------------------------------------------
			-- TELEPORT
			---------------------------------------------------

			rootPart.CFrame = lastSafeCFrame

			task.wait(LOCK_TIME)

			---------------------------------------------------
			-- UNLOCK (GUARANTEED)
			---------------------------------------------------

			rootPart.Anchored = false

			humanoid.WalkSpeed = oldWalkSpeed
			humanoid.JumpPower = oldJumpPower
			humanoid.AutoRotate = oldAutoRotate

			highestY = rootPart.Position.Y

			task.wait(0.15)

			---------------------------------------------------
			-- 🔥 CRITICAL RESET (PREVENT STUCK LOOP)
			---------------------------------------------------
			teleporting = false
		end
	end
end)

Features & Information

teleports back to the position u fell from yes i did it with ai

Community Comments (0)

No comments yet for this script.

More Scripts for Tower of Hell