exploit yay! (keyless as always) (always open source!)
Key Required

exploit yay! (keyless as always) (always open source!)

Evade keylessopensourceguykeylessopensourceguy 2.2K views 14.7K executesUpdated Sep 28, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•901 lines (13650 chars)
--========================================================
-- EVADE AFK
--
-- RightShift = Open / close menu
-- P          = Toggle orbit
--
-- ONLY:
--   1. Orbit
--   2. Auto Revive
--
-- Orbit persists through character respawns.
--========================================================

local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local Player = Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")

--========================================================
-- SETTINGS
--========================================================

local ORBIT_RADIUS = 30
local ORBIT_SPEED = 2
local ORBIT_HEIGHT = 500000

local REVIVE_OFFSET = -5
local REVIVE_HOLD_TIME = 15

--========================================================
-- STATE
--========================================================

local OrbitEnabled = false
local AutoReviveEnabled = false

local OrbitAngle = 0
local OrbitOrigin = nil

local Reviving = false
local CurrentPrompt = nil

--========================================================
-- CHARACTER
--========================================================

local function GetCharacter()

	local Character = Player.Character

	if not Character then
		return nil
	end

	local Root =
		Character:FindFirstChild("HumanoidRootPart")

	local Humanoid =
		Character:FindFirstChildOfClass("Humanoid")

	if not Root or not Humanoid then
		return nil
	end

	return Character, Root, Humanoid
end

--========================================================
-- REMOVE OLD UI
--========================================================

local OldGUI =
	PlayerGui:FindFirstChild("EvadeAFK")

if OldGUI then
	OldGUI:Destroy()
end

--========================================================
-- GUI
--========================================================

local GUI = Instance.new("ScreenGui")

GUI.Name = "EvadeAFK"
GUI.ResetOnSpawn = false
GUI.IgnoreGuiInset = true
GUI.DisplayOrder = 999999
GUI.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
GUI.Parent = PlayerGui

local Main = Instance.new("Frame")

Main.Name = "Main"

Main.Size =
	UDim2.fromOffset(330, 220)

Main.Position =
	UDim2.new(
		0.5,
		-165,
		0.5,
		-110
	)

Main.BackgroundColor3 =
	Color3.fromRGB(12, 12, 18)

Main.BorderSizePixel = 0
Main.Visible = false
Main.ZIndex = 100

Main.Parent = GUI

local Corner = Instance.new("UICorner")

Corner.CornerRadius =
	UDim.new(0, 14)

Corner.Parent = Main

local Stroke = Instance.new("UIStroke")

Stroke.Color =
	Color3.fromRGB(135, 65, 255)

Stroke.Thickness = 2
Stroke.Parent = Main

--========================================================
-- TITLE
--========================================================

local Title = Instance.new("TextLabel")

Title.Size =
	UDim2.new(1, 0, 0, 55)

Title.BackgroundTransparency = 1

Title.Text = "EVADE AFK"

Title.TextColor3 =
	Color3.new(1, 1, 1)

Title.Font =
	Enum.Font.GothamBold

Title.TextSize = 24
Title.ZIndex = 101

Title.Parent = Main

--========================================================
-- BUTTON CREATOR
--========================================================

local function CreateButton(Text, Y)

	local Button =
		Instance.new("TextButton")

	Button.Position =
		UDim2.fromOffset(20, Y)

	Button.Size =
		UDim2.new(
			1,
			-40,
			0,
			45
		)

	Button.BackgroundColor3 =
		Color3.fromRGB(55, 55, 65)

	Button.BorderSizePixel = 0

	Button.Text = Text

	Button.TextColor3 =
		Color3.new(1, 1, 1)

	Button.Font =
		Enum.Font.GothamBold

	Button.TextSize = 14

	Button.ZIndex = 101

	Button.Parent = Main

	local ButtonCorner =
		Instance.new("UICorner")

	ButtonCorner.CornerRadius =
		UDim.new(0, 10)

	ButtonCorner.Parent =
		Button

	return Button
end

--========================================================
-- BUTTONS
--========================================================

local OrbitButton =
	CreateButton(
		"ORBIT: OFF",
		65
	)

local ReviveButton =
	CreateButton(
		"AUTO REVIVE: OFF",
		120
	)

--========================================================
-- INFO
--========================================================

local Info = Instance.new("TextLabel")

Info.Position =
	UDim2.fromOffset(10, 172)

Info.Size =
	UDim2.new(
		1,
		-20,
		0,
		35
	)

Info.BackgroundTransparency = 1

Info.Text =
	"Right Shift = Menu  •  P = Orbit"

Info.TextColor3 =
	Color3.fromRGB(150, 150, 165)

Info.Font =
	Enum.Font.Gotham

Info.TextSize = 12

Info.ZIndex = 101

Info.Parent = Main

--========================================================
-- UI UPDATE
--========================================================

local function UpdateUI()

	if OrbitEnabled then

		OrbitButton.Text =
			"ORBIT: ON [P]"

		OrbitButton.BackgroundColor3 =
			Color3.fromRGB(105, 55, 210)

	else

		OrbitButton.Text =
			"ORBIT: OFF [P]"

		OrbitButton.BackgroundColor3 =
			Color3.fromRGB(55, 55, 65)

	end

	if AutoReviveEnabled then

		if Reviving then

			ReviveButton.Text =
				"AUTO REVIVE: REVIVING..."

		else

			ReviveButton.Text =
				"AUTO REVIVE: ON"

		end

		ReviveButton.BackgroundColor3 =
			Color3.fromRGB(45, 150, 90)

	else

		ReviveButton.Text =
			"AUTO REVIVE: OFF"

		ReviveButton.BackgroundColor3 =
			Color3.fromRGB(55, 55, 65)

	end
end

--========================================================
-- DOWNED DETECTION
--========================================================

local function IsDowned(Character)

	if not Character then
		return false
	end

	-- Attributes

	if Character:GetAttribute("Downed") == true then
		return true
	end

	if Character:GetAttribute("downed") == true then
		return true
	end

	if Character:GetAttribute("DBNO") == true then
		return true
	end

	-- BoolValues

	for _, Name in ipairs({
		"Downed",
		"downed",
		"DBNO",
		"Knocked",
		"knocked"
	}) do

		local Value =
			Character:FindFirstChild(Name)

		if Value
			and Value:IsA("BoolValue")
			and Value.Value
		then

			return true

		end
	end

	return false
end

--========================================================
-- FIND E PROMPT
--========================================================

local function FindEPrompt(Character)

	if not Character then
		return nil
	end

	for _, Object in ipairs(
		Character:GetDescendants()
	) do

		if Object:IsA("ProximityPrompt")
			and Object.Enabled
			and Object.KeyboardKeyCode ==
				Enum.KeyCode.E
		then

			return Object

		end
	end

	return nil
end

--========================================================
-- FIND DOWNED PLAYER
--========================================================

local function FindDownedPlayer()

	local MyCharacter, MyRoot =
		GetCharacter()

	if not MyRoot then
		return nil
	end

	local ClosestPlayer = nil
	local ClosestDistance = math.huge

	for _, Target in ipairs(
		Players:GetPlayers()
	) do

		if Target ~= Player then

			local Character =
				Target.Character

			if Character
				and IsDowned(Character)
			then

				local Root =
					Character:
					FindFirstChild(
						"HumanoidRootPart"
					)

				if Root then

					local Distance =
						(
							Root.Position -
							MyRoot.Position
						).Magnitude

					if Distance <
						ClosestDistance
					then

						ClosestDistance =
							Distance

						ClosestPlayer =
							Target

					end
				end
			end
		end
	end

	return ClosestPlayer
end

--========================================================
-- ORBIT
--========================================================

local function StartOrbit()

	local Character, Root =
		GetCharacter()

	if not Root then
		return
	end

	OrbitOrigin =
		Root.Position

	OrbitAngle = 0

	OrbitEnabled = true

	UpdateUI()
end

local function StopOrbit()

	OrbitEnabled = false

	local Character, Root, Humanoid =
		GetCharacter()

	if Root then

		Root.Anchored = false

		Root.AssemblyLinearVelocity =
			Vector3.zero

		Root.AssemblyAngularVelocity =
			Vector3.zero

	end

	if Humanoid then
		Humanoid.AutoRotate = true
	end

	UpdateUI()
end

local function ToggleOrbit()

	if OrbitEnabled then
		StopOrbit()
	else
		StartOrbit()
	end
end

--========================================================
-- ORBIT LOOP
--========================================================

RunService.RenderStepped:
Connect(function(DT)

	if not OrbitEnabled then
		return
	end

	-- Revive gets priority.

	if Reviving then
		return
	end

	local Character,
		Root,
		Humanoid =
		GetCharacter()

	if not Root then
		return
	end

	-- If character respawned,
	-- recreate an origin automatically.

	if not OrbitOrigin then

		OrbitOrigin =
			Root.Position

	end

	Root.Anchored = true

	Humanoid.AutoRotate = false

	OrbitAngle +=
		ORBIT_SPEED * DT

	local Center =
		OrbitOrigin
		+
		Vector3.new(
			0,
			ORBIT_HEIGHT,
			0
		)

	local Offset =
		Vector3.new(
			math.cos(OrbitAngle)
				* ORBIT_RADIUS,

			0,

			math.sin(OrbitAngle)
				* ORBIT_RADIUS
		)

	Root.CFrame =
		CFrame.new(
			Center + Offset
		)
		*
		CFrame.Angles(
			0,
			-OrbitAngle,
			0
		)

end)

--========================================================
-- AUTO REVIVE
--========================================================

task.spawn(function()

	while GUI.Parent do

		task.wait(0.1)

		if not AutoReviveEnabled then
			continue
		end

		if Reviving then
			continue
		end

		local Target =
			FindDownedPlayer()

		if not Target then
			continue
		end

		local TargetCharacter =
			Target.Character

		if not TargetCharacter then
			continue
		end

		local TargetRoot =
			TargetCharacter:
			FindFirstChild(
				"HumanoidRootPart"
			)

		if not TargetRoot then
			continue
		end

		local Prompt =
			FindEPrompt(
				TargetCharacter
			)

		if not Prompt then
			continue
		end

		local MyCharacter,
			MyRoot,
			MyHumanoid =
			GetCharacter()

		if not MyRoot then
			continue
		end

		--============================================
		-- START REVIVE
		--============================================

		Reviving = true

		UpdateUI()

		MyRoot.Anchored = false

		MyRoot.AssemblyLinearVelocity =
			Vector3.zero

		MyRoot.AssemblyAngularVelocity =
			Vector3.zero

		-- Start holding E.

		CurrentPrompt = Prompt

		Prompt:InputHoldBegin()

		local StartTime =
			os.clock()

		--============================================
		-- HOLD FOR 15 SECONDS
		--============================================

		while
			AutoReviveEnabled
			and
			(os.clock() - StartTime)
				< REVIVE_HOLD_TIME
		do

			-- Target disappeared?

			if not TargetCharacter.Parent then
				break
			end

			TargetRoot =
				TargetCharacter:
				FindFirstChild(
					"HumanoidRootPart"
				)

			if not TargetRoot then
				break
			end

			if not MyRoot.Parent then
				break
			end

			-- Stay exactly 5 studs
			-- underneath them.

			MyRoot.CFrame =
				TargetRoot.CFrame
				*
				CFrame.new(
					0,
					REVIVE_OFFSET,
					0
				)

			MyRoot.AssemblyLinearVelocity =
				Vector3.zero

			MyRoot.AssemblyAngularVelocity =
				Vector3.zero

			RunService.Heartbeat:Wait()
		end

		--============================================
		-- RELEASE E
		--============================================

		pcall(function()

			Prompt:InputHoldEnd()

		end)

		CurrentPrompt = nil

		Reviving = false

		--============================================
		-- RETURN TO ORBIT
		--============================================

		if OrbitEnabled then

			local Character,
				NewRoot =
				GetCharacter()

			if NewRoot then

				NewRoot.Anchored =
					true

			end
		end

		UpdateUI()

		-- Small delay before finding
		-- another downed player.

		task.wait(0.1)

	end

end)

--========================================================
-- BUTTONS
--========================================================

OrbitButton.MouseButton1Click:
Connect(function()

	ToggleOrbit()

end)

ReviveButton.MouseButton1Click:
Connect(function()

	AutoReviveEnabled =
		not AutoReviveEnabled

	-- Immediately release E
	-- if user disables Auto Revive.

	if not AutoReviveEnabled
		and CurrentPrompt
	then

		pcall(function()

			CurrentPrompt:
				InputHoldEnd()

		end)

		CurrentPrompt = nil
		Reviving = false

	end

	UpdateUI()

end)

--========================================================
-- KEYBINDS
--========================================================

UIS.InputBegan:
Connect(function(Input, Processed)

	-- RIGHT SHIFT ALWAYS TOGGLES MENU

	if Input.KeyCode ==
		Enum.KeyCode.RightShift
	then

		Main.Visible =
			not Main.Visible

		return
	end

	if Processed then
		return
	end

	-- P = ORBIT

	if Input.KeyCode ==
		Enum.KeyCode.P
	then

		ToggleOrbit()

	end

end)

--========================================================
-- ROUND / RESPAWN HANDLING
--========================================================

Player.CharacterAdded:
Connect(function(Character)

	-- IMPORTANT:
	-- Do NOT change OrbitEnabled here.
	-- Do NOT change AutoReviveEnabled here.
	--
	-- Therefore a respawn/round reset
	-- doesn't disable either feature.

	Reviving = false
	CurrentPrompt = nil

	local Root =
		Character:
		WaitForChild(
			"HumanoidRootPart",
			10
		)

	if not Root then
		return
	end

	-- New origin for new character,
	-- while keeping orbit ON.

	OrbitOrigin =
		Root.Position

	OrbitAngle = 0

	task.wait(0.2)

	if OrbitEnabled
		and Root.Parent
	then

		Root.Anchored = true

	end

	UpdateUI()

end)

--========================================================
-- INITIAL UI
--========================================================

UpdateUI()

print("--------------------------------")
print("EVADE AFK LOADED")
print("Right Shift = Menu")
print("P = Orbit")
print("Orbit persists through respawns")
print("Auto Revive hold = 15 seconds")
print("--------------------------------")

Features & Information

orbit (afk) revive (self exp.) rightshift to open!
#keyless#opensource#free#afk evade#best free

Community Comments (0)

No comments yet for this script.

More Scripts for Evade