
Key RequiredUniversal
--========================================================
-- 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("--------------------------------")No comments yet for this script.



![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/script/0-1753093706828.png)