EVADE THE VILLAIN
Key RequiredUniversal

EVADE THE VILLAIN

Universal ScriptKiritopetKiritopet 5.8K views 1.3K executesUpdated Jun 26, 2026
Unrated
00
Lua Script•627 lines (19405 chars)
-- Evade lander script

local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local StarterGui = game:GetService("StarterGui")

pcall(function()
    loadstring(game:HttpGet("https://raw.githubusercontent.com/ArgetnarYT/scripts/main/AntiAfk2.lua"))()
end)

if not LocalPlayer then
    Players.PlayerAdded:Wait()
    LocalPlayer = Players.LocalPlayer
end

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "Nova"
ScreenGui.ResetOnSpawn = false
ScreenGui.IgnoreGuiInset = true

pcall(function()
    if LocalPlayer.PlayerGui:FindFirstChild("Nova") then
        LocalPlayer.PlayerGui:FindFirstChild("Nova"):Destroy()
    end
end)

local success = pcall(function()
    ScreenGui.Parent = LocalPlayer.PlayerGui
end)

if not success then
    repeat task.wait() until LocalPlayer.PlayerGui
    ScreenGui.Parent = LocalPlayer.PlayerGui
end

local allConnections = {}
local playerESPConnections = {}
local espEnabled = false
local menuCollapsed = false
local autoFarmEnabled = false
local scriptRunning = true
local spawnPosition = nil

local function captureSpawnPosition()
    if spawnPosition then return end
    local char = LocalPlayer.Character
    if char and char:FindFirstChild("HumanoidRootPart") then
        for _, obj in ipairs(Workspace:GetDescendants()) do
            if obj:IsA("SpawnLocation") then
                spawnPosition = obj.Position + Vector3.new(0, 3, 0)
                return
            end
        end
        spawnPosition = char.HumanoidRootPart.Position
    end
end

LocalPlayer.CharacterAdded:Connect(function()
    task.wait(0.5)
    captureSpawnPosition()
end)

local function getLanguage()
    local language = "en"
    pcall(function()
        local locale = LocalPlayer.LocaleId or LocalPlayer.Locale or "en"
        if locale then
            local short = tostring(locale):sub(1, 2):lower()
            if short == "ru" or short == "uk" or short == "be" or short == "kk" then
                language = "ru"
            end
        end
    end)
    return language
end

local currentLanguage = getLanguage()

local translations = {
    en = {
        no_temp = "No Temp V found nearby!",
        nova = "Nova  |  Evade Lander",
        no_spawn = "Spawn not found!",
        auto_farm_human = "AUTO FARM [Human]"
    },
    ru = {
        no_temp = "Temp V рядом не найден!",
        nova = "Nova  |  Evade Lander",
        no_spawn = "Спавн не найден!",
        auto_farm_human = "АВТО ФАРМ [Человек]"
    }
}

local function translate(key)
    if translations[currentLanguage] and translations[currentLanguage][key] then
        return translations[currentLanguage][key]
    end
    return translations["en"][key] or key
end

local function sendNotification(message)
    pcall(function()
        StarterGui:SetCore("SendNotification", {
            Title = "Nova",
            Text = message,
            Duration = 3
        })
    end)
end

local localeConnection = LocalPlayer:GetPropertyChangedSignal("LocaleId"):Connect(function()
    currentLanguage = getLanguage()
end)
table.insert(allConnections, localeConnection)

local function createBorder(parent, zIndex)
    local left = Instance.new("Frame")
    left.Size = UDim2.new(0, 1, 1, 0)
    left.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    left.BorderSizePixel = 0
    left.ZIndex = zIndex
    left.Active = false
    left.Parent = parent

    local top = Instance.new("Frame")
    top.Size = UDim2.new(1, 0, 0, 1)
    top.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    top.BorderSizePixel = 0
    top.ZIndex = zIndex
    top.Active = false
    top.Parent = parent

    local right = Instance.new("Frame")
    right.Size = UDim2.new(0, 1, 1, 0)
    right.Position = UDim2.new(1, -1, 0, 0)
    right.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    right.BorderSizePixel = 0
    right.ZIndex = zIndex
    right.Active = false
    right.Parent = parent

    local bottom = Instance.new("Frame")
    bottom.Size = UDim2.new(1, 0, 0, 1)
    bottom.Position = UDim2.new(0, 0, 1, -1)
    bottom.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    bottom.BorderSizePixel = 0
    bottom.ZIndex = zIndex
    bottom.Active = false
    bottom.Parent = parent
end

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 240, 0, 190)
mainFrame.Position = UDim2.new(0.5, -120, 0, 50)
mainFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
mainFrame.BorderSizePixel = 0
mainFrame.ZIndex = 100
mainFrame.ClipsDescendants = true
mainFrame.Parent = ScreenGui

createBorder(mainFrame, 200)

local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, -2, 0, 22)
titleBar.Position = UDim2.new(0, 1, 0, 1)
titleBar.BackgroundColor3 = Color3.fromRGB(12, 12, 12)
titleBar.BorderSizePixel = 0
titleBar.ZIndex = 101
titleBar.Parent = mainFrame

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -30, 1, 0)
titleLabel.Position = UDim2.new(0, 8, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = translate("nova")
titleLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
titleLabel.Font = Enum.Font.Code
titleLabel.TextSize = 12
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.ZIndex = 102
titleLabel.Parent = titleBar

local collapseButton = Instance.new("TextButton")
collapseButton.Size = UDim2.new(0, 22, 0, 22)
collapseButton.Position = UDim2.new(1, -22, 0, 0)
collapseButton.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
collapseButton.BorderSizePixel = 0
collapseButton.Text = "-"
collapseButton.TextColor3 = Color3.fromRGB(200, 200, 200)
collapseButton.Font = Enum.Font.Code
collapseButton.TextSize = 14
collapseButton.ZIndex = 102
collapseButton.Parent = titleBar

createBorder(collapseButton, 103)

local titleDivider = Instance.new("Frame")
titleDivider.Size = UDim2.new(1, -2, 0, 1)
titleDivider.Position = UDim2.new(0, 1, 0, 23)
titleDivider.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
titleDivider.BorderSizePixel = 0
titleDivider.ZIndex = 200
titleDivider.Parent = mainFrame

local contentFrame = Instance.new("Frame")
contentFrame.Size = UDim2.new(1, -2, 1, -25)
contentFrame.Position = UDim2.new(0, 1, 0, 24)
contentFrame.BackgroundTransparency = 1
contentFrame.ZIndex = 101
contentFrame.Parent = mainFrame

local isDragging = false
local dragStart = nil
local frameStartPos = nil

local function startDrag(input)
    isDragging = true
    dragStart = input.Position
    frameStartPos = mainFrame.Position
end

local function stopDrag()
    isDragging = false
end

titleBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
        startDrag(input)
    end
end)

titleBar.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
        stopDrag()
    end
end)

titleLabel.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
        startDrag(input)
    end
end)

titleLabel.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
        stopDrag()
    end
end)

local dragInputChanged = UserInputService.InputChanged:Connect(function(input)
    if isDragging and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) then
        local delta = input.Position - dragStart
        mainFrame.Position = UDim2.new(
            frameStartPos.X.Scale,
            frameStartPos.X.Offset + delta.X,
            frameStartPos.Y.Scale,
            frameStartPos.Y.Offset + delta.Y
        )
    end
end)
table.insert(allConnections, dragInputChanged)

local dragInputEnded = UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
        stopDrag()
    end
end)
table.insert(allConnections, dragInputEnded)

collapseButton.MouseButton1Click:Connect(function()
    menuCollapsed = not menuCollapsed
    if menuCollapsed then
        mainFrame:TweenSize(UDim2.new(0, 240, 0, 24), "Out", "Quad", 0.2, true)
        collapseButton.Text = "+"
        contentFrame.Visible = false
    else
        mainFrame:TweenSize(UDim2.new(0, 240, 0, 190), "Out", "Quad", 0.2, true)
        collapseButton.Text = "-"
        contentFrame.Visible = true
    end
end)

local function createButton(buttonText, yPosition, callback)
    local button = Instance.new("TextButton")
    button.Size = UDim2.new(0, 210, 0, 22)
    button.Position = UDim2.new(0.5, -105, 0, yPosition)
    button.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
    button.Text = buttonText
    button.TextColor3 = Color3.fromRGB(200, 200, 200)
    button.Font = Enum.Font.Code
    button.TextSize = 11
    button.BorderSizePixel = 0
    button.ZIndex = 150
    button.Active = true
    button.Selectable = true
    button.Parent = contentFrame
    createBorder(button, 149)
    button.Activated:Connect(callback)
    return button
end

local function createToggle(toggleText, yPosition, default, callback)
    local button = Instance.new("TextButton")
    button.Size = UDim2.new(0, 210, 0, 22)
    button.Position = UDim2.new(0.5, -105, 0, yPosition)
    button.BackgroundColor3 = default and Color3.fromRGB(25, 45, 25) or Color3.fromRGB(30, 30, 30)
    button.Text = toggleText .. ": " .. (default and "ON" or "OFF")
    button.TextColor3 = Color3.fromRGB(200, 200, 200)
    button.Font = Enum.Font.Code
    button.TextSize = 11
    button.BorderSizePixel = 0
    button.ZIndex = 150
    button.Active = true
    button.Selectable = true
    button.Parent = contentFrame
    createBorder(button, 149)

    local state = default
    local debounce = false
    local function toggle()
        if debounce then return end
        debounce = true
        state = not state
        button.Text = toggleText .. ": " .. (state and "ON" or "OFF")
        button.BackgroundColor3 = state and Color3.fromRGB(25, 45, 25) or Color3.fromRGB(30, 30, 30)
        callback(state)
        task.delay(0.3, function()
            debounce = false
        end)
    end

    button.Activated:Connect(toggle)
    return button
end

local function getClosestTempVPrompt()
    local character = LocalPlayer.Character
    if not character or not character:FindFirstChild("HumanoidRootPart") then return nil end
    local humanoidRootPart = character.HumanoidRootPart
    local tempVFolder = Workspace:FindFirstChild("_TempVPickups")
    if not tempVFolder then return nil end
    local minDistance = math.huge
    local closest = nil
    for _, object in ipairs(tempVFolder:GetDescendants()) do
        if object:IsA("ProximityPrompt") and object.Name == "TempVPickupPrompt" then
            local parent = object.Parent
            if parent and parent:IsA("BasePart") then
                local distance = (humanoidRootPart.Position - parent.Position).Magnitude
                if distance < minDistance then
                    minDistance = distance
                    closest = object
                end
            end
        end
    end
    return closest
end

local function isPlayerOnSpawn()
    if not spawnPosition then
        captureSpawnPosition()
        return true
    end
    local char = LocalPlayer.Character
    if not char or not char:FindFirstChild("HumanoidRootPart") then return true end
    local distance = (char.HumanoidRootPart.Position - spawnPosition).Magnitude
    return distance < 15
end

local function smoothTeleport(targetCFrame)
    local character = LocalPlayer.Character
    if not character or not character:FindFirstChild("HumanoidRootPart") then return end
    local humanoidRootPart = character.HumanoidRootPart
    
    humanoidRootPart.Velocity = Vector3.zero
    
    local startPosition = humanoidRootPart.Position
    local endPosition = targetCFrame.Position
    local distance = (endPosition - startPosition).Magnitude
    
    if distance < 1 then return end
    
    local steps = math.clamp(math.ceil(distance / 10), 5, 30)
    
    for i = 1, steps do
        local alpha = i / steps
        local smoothAlpha = alpha * alpha * (3 - 2 * alpha)
        local position = startPosition:Lerp(endPosition, smoothAlpha)
        humanoidRootPart.CFrame = CFrame.new(position)
        RunService.RenderStepped:Wait()
    end
    
    humanoidRootPart.CFrame = targetCFrame
    humanoidRootPart.Velocity = Vector3.zero
end

local function activateProximityPrompt(prompt)
    if not prompt or not prompt.Parent then return end
    
    local character = LocalPlayer.Character
    if not character or not character:FindFirstChild("HumanoidRootPart") then return end
    
    local humanoidRootPart = character.HumanoidRootPart
    local promptPart = prompt.Parent
    
    humanoidRootPart.CFrame = promptPart.CFrame * CFrame.new(0, 3, 0)
    task.wait(0.15)
    
    for i = 1, 3 do
        pcall(function()
            fireproximityprompt(prompt)
        end)
        task.wait(0.15)
    end
end

local function collectTempVOnce()
    local character = LocalPlayer.Character
    if not character or not character:FindFirstChild("HumanoidRootPart") then
        sendNotification(translate("no_temp"))
        return false
    end
    
    local target = getClosestTempVPrompt()
    if not target or not target.Parent then
        sendNotification(translate("no_temp"))
        return false
    end
    
    local part = target.Parent
    local originalPosition = character.HumanoidRootPart.CFrame
    
    smoothTeleport(part.CFrame * CFrame.new(0, 3, 0))
    task.wait(0.2)
    
    activateProximityPrompt(target)
    task.wait(0.3)
    
    smoothTeleport(originalPosition)
    
    return true
end

local function teleportToSpawn()
    local character = LocalPlayer.Character
    if not character or not character:FindFirstChild("HumanoidRootPart") then return end
    
    if isPlayerOnSpawn() then return end
    
    if spawnPosition then
        smoothTeleport(CFrame.new(spawnPosition))
        return
    end
    
    for _, object in ipairs(Workspace:GetDescendants()) do
        if object:IsA("SpawnLocation") then
            smoothTeleport(object.CFrame * CFrame.new(0, 3, 0))
            return
        end
    end
    sendNotification(translate("no_spawn"))
end

local function teleportToTempV()
    local target = getClosestTempVPrompt()
    if target and target.Parent then
        smoothTeleport(target.Parent.CFrame * CFrame.new(0, 3, 0))
    else
        sendNotification(translate("no_temp"))
    end
end

local function teleportToRandomMapLocation()
    local character = LocalPlayer.Character
    if not character or not character:FindFirstChild("HumanoidRootPart") then return end
    
    local validParts = {}
    pcall(function()
        for _, object in ipairs(Workspace:GetDescendants()) do
            if object:IsA("BasePart") and object.Transparency < 0.5 and object.Size.X > 20 and object.Size.Z > 20 then
                if object.Position.Y > -50 and object.Position.Y < 100 then
                    table.insert(validParts, object)
                end
            end
        end
    end)
    
    if #validParts > 0 then
        local chosenPart = validParts[math.random(1, #validParts)]
        smoothTeleport(chosenPart.CFrame * CFrame.new(0, 5, 0))
    else
        sendNotification("Map not found!")
    end
end

createButton("COLLECT TEMP V", 5, function()
    collectTempVOnce()
end)

createToggle(translate("auto_farm_human"), 32, false, function(state)
    autoFarmEnabled = state
    if state then
        task.spawn(function()
            while autoFarmEnabled and scriptRunning do
                pcall(function()
                    if not isPlayerOnSpawn() then
                        teleportToSpawn()
                    end
                end)
                task.wait(1)
            end
        end)
    end
end)

createToggle("ESP", 59, false, function(state)
    espEnabled = state
    if not state then
        for _, player in ipairs(Players:GetPlayers()) do
            if player.Character then
                local highlight = player.Character:FindFirstChild("ESP_Highlight")
                if highlight then
                    highlight:Destroy()
                end
            end
        end
    end
end)

createButton("TP TO SPAWN", 86, function()
    teleportToSpawn()
end)

createButton("TP TO TEMP V", 113, function()
    teleportToTempV()
end)

createButton("TP TO MAP", 140, function()
    teleportToRandomMapLocation()
end)

createButton("DESTROY GUI", 167, function()
    autoFarmEnabled = false
    scriptRunning = false
    for _, connection in pairs(allConnections) do
        connection:Disconnect()
    end
    for _, connection in pairs(playerESPConnections) do
        connection:Disconnect()
    end
    table.clear(allConnections)
    table.clear(playerESPConnections)
    ScreenGui:Destroy()
end)

local function createPlayerESP(player)
    if player == LocalPlayer then return end
    
    local function setupESP()
        local character = player.Character
        if not character then return end
        
        local existing = character:FindFirstChild("ESP_Highlight")
        if existing then existing:Destroy() end
        
        local highlight = Instance.new("Highlight")
        highlight.Name = "ESP_Highlight"
        highlight.FillTransparency = 0.7
        highlight.OutlineTransparency = 0
        highlight.FillColor = Color3.fromRGB(100, 150, 255)
        highlight.OutlineColor = Color3.fromRGB(100, 150, 255)
        highlight.Enabled = espEnabled
        highlight.Parent = character
    end
    
    setupESP()
    
    if playerESPConnections[player] then
        playerESPConnections[player]:Disconnect()
    end
    playerESPConnections[player] = player.CharacterAdded:Connect(setupESP)
end

local playerAddedConnection = Players.PlayerAdded:Connect(function(player)
    local characterConnection
    characterConnection = player.CharacterAdded:Connect(function()
        task.wait(1)
        if espEnabled then
            createPlayerESP(player)
        end
    end)
    table.insert(playerESPConnections, characterConnection)
end)
table.insert(allConnections, playerAddedConnection)

local playerRemovingConnection = Players.PlayerRemoving:Connect(function(player)
    if playerESPConnections[player] then
        playerESPConnections[player]:Disconnect()
        playerESPConnections[player] = nil
    end
end)
table.insert(allConnections, playerRemovingConnection)

task.spawn(function()
    while scriptRunning and ScreenGui.Parent do
        if espEnabled then
            for _, player in ipairs(Players:GetPlayers()) do
                if player ~= LocalPlayer and player.Character and not player.Character:FindFirstChild("ESP_Highlight") then
                    createPlayerESP(player)
                end
            end
        end
        task.wait(1)
    end
end)

task.wait(1)
if espEnabled then
    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character then
            createPlayerESP(player)
        end
    end
end

Features & Information

Nova | Evade Lander Script 🔥 Powerful all-in-one script for Evade Lander with automation, ESP, teleports, Anti AFK, and clean mobile-friendly UI. Built for fast farming, smooth movement, and stable gameplay. 🕒 Development Time: 1 full day of scripting, optimization, and testing. 📜 Description: Nova is a clean and optimized script made specifically for Evade Lander. It includes advanced farming functions, smooth teleports, player ESP, Anti AFK protection, and a modern draggable interface. Designed mainly for mobile executors but fully compatible with PC. ⚙️ Main Features: • ESP – View all players through walls using blue highlights • Auto Farm [Human] – Automatically returns you to spawn and keeps farming safely • Collect Temp V – Instantly finds nearest Temp V, teleports smoothly, collects, and returns back • TP to Spawn – Instant teleport back to spawn • TP to Temp V – Direct teleport to nearest Temp V location • TP to Map – Teleport to random map positions • Anti AFK – Prevents automatic inactivity kick • Collapsible Menu – Hide or expand UI whenever needed • Draggable UI – Move interface freely anywhere on screen • Language Detection – Automatic English/Russian support 🔧 Built-in Anti AFK System: Powered by Doku’s Anti AFK system • Loads automatically on startup • No extra setup required • Works in background continuously 📱 Compatibility: • Fully tested on Android devices • PC supported (Windows / Mac) • Supports Touch, Mouse, and Keyboard input • Works with Delta Executor and similar executors 💡 How To Use: 1. Inject script 2. Open Nova menu 3. Enable desired functions 4. Drag interface anywhere on screen 5. Use “-” button to collapse menu ⚠️ Additional Notes: • ESP highlights all players in blue • Teleports use smooth movement for safer execution • Optimized primarily for mobile gameplay • Lightweight and clean UI design 📊 Script Statistics: • 10 total features • 4 teleport functions • Mobile + PC support • Dual language support • Built-in Anti AFK system • Optimized dark theme UI 👨‍💻 Script Information: Game: Roblox – Evade Lander Platform: Mobile (tested) / PC (supported) UI: Custom Nova Interface Special thanks to Doku for the Anti AFK system.
#No key

Community Comments (2)

ninechochoninechochoJun 26, 2026

Where apk

Replying to @ninechocho
KiritopetKiritopetJun 26, 2026

@ninechocho This is a Roblox script, not an APK. Use Delta Executor or similar.

More Scripts for Universal Scripts