Fly n aimbot
Key RequiredUniversal

Fly n aimbot

Universal ScriptKjjjJYUGYGYGKjjjJYUGYGYG 46 views 246 executesUpdated Jul 21, 2026
Unrated
00
Lua Script•202 lines (6882 chars)
--// Mobile Aimbot & Fly Script (Wall Check Version)
local ScreenGui = Instance.new("ScreenGui")
local MainFrame = Instance.new("Frame")
local Title = Instance.new("TextLabel")
local AimbotBtn = Instance.new("TextButton")
local FlyBtn = Instance.new("TextButton")
local SpeedInput = Instance.new("TextBox")

--// UI Setup
ScreenGui.Name = "MobileCheatGui_Final"
ScreenGui.Parent = game:GetService("CoreGui") or game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")
ScreenGui.ResetOnSpawn = false

MainFrame.Name = "MainFrame"
MainFrame.Parent = ScreenGui
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.Position = UDim2.new(0.1, 0, 0.2, 0)
MainFrame.Size = UDim2.new(0, 160, 0, 200)
MainFrame.Active = true
MainFrame.Draggable = true

Title.Name = "Title"
Title.Parent = MainFrame
Title.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
Title.Size = UDim2.new(1, 0, 0, 30)
Title.Font = Enum.Font.SourceSansBold
Title.Text = "Mobile Menu v3"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 18

AimbotBtn.Name = "AimbotBtn"
AimbotBtn.Parent = MainFrame
AimbotBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50)
AimbotBtn.Position = UDim2.new(0.05, 0, 0.2, 0)
AimbotBtn.Size = UDim2.new(0.9, 0, 0, 35)
AimbotBtn.Font = Enum.Font.SourceSans
AimbotBtn.Text = "Aimbot: OFF"
AimbotBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
AimbotBtn.TextSize = 16

FlyBtn.Name = "FlyBtn"
FlyBtn.Parent = MainFrame
FlyBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50)
FlyBtn.Position = UDim2.new(0.05, 0, 0.45, 0)
FlyBtn.Size = UDim2.new(0.9, 0, 0, 35)
FlyBtn.Font = Enum.Font.SourceSans
FlyBtn.Text = "Fly: OFF"
FlyBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
FlyBtn.TextSize = 16

SpeedInput.Name = "SpeedInput"
SpeedInput.Parent = MainFrame
SpeedInput.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
SpeedInput.Position = UDim2.new(0.05, 0, 0.7, 0)
SpeedInput.Size = UDim2.new(0.9, 0, 0, 35)
SpeedInput.Font = Enum.Font.SourceSans
SpeedInput.Text = "Fly Speed: 50"
SpeedInput.TextColor3 = Color3.fromRGB(255, 255, 255)
SpeedInput.TextSize = 14

--// Configuration & Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera

local States = {
    Aimbot = false,
    Fly = false,
    FlySpeed = 50
}

--// Wall Check Function
local function IsVisible(TargetPart)
    local Character = LocalPlayer.Character
    if not Character then return false end
    
    -- Cast a ray from Camera to Target Part
    local RaycastParamsEx = RaycastParams.new()
    RaycastParamsEx.FilterType = Enum.RaycastFilterType.Exclude
    RaycastParamsEx.FilterDescendantsInstances = {Character, Camera} -- Ignore yourself and camera
    
    local Origin = Camera.CFrame.Position
    local Direction = TargetPart.Position - Origin
    local Result = workspace:Raycast(Origin, Direction, RaycastParamsEx)
    
    -- If ray hits nothing or hits the target directly, it means the target is visible
    if not Result or Result.Instance:IsDescendantOf(TargetPart.Parent) then
        return true
    end
    return false
end

--// Target Selector with Wall Check
local function GetClosestPlayer()
    local ClosestTarget = nil
    local MaxDistance = math.huge
    local ScreenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)

    for _, Player in pairs(Players:GetPlayers()) do
        if Player ~= LocalPlayer and Player.Character then
            local Head = Player.Character:FindFirstChild("Head")
            local Humanoid = Player.Character:FindFirstChildOfClass("Humanoid")
            
            if Head and Humanoid and Humanoid.Health > 0 then
                local ScreenPosition, OnScreen = Camera:WorldToScreenPoint(Head.Position)
                
                if OnScreen then
                    -- Check if the player is behind a wall
                    if IsVisible(Head) then
                        local TargetVector = Vector2.new(ScreenPosition.X, ScreenPosition.Y)
                        local Distance = (ScreenCenter - TargetVector).Magnitude
                        
                        if Distance < MaxDistance then
                            MaxDistance = Distance
                            ClosestTarget = Head
                        end
                    end
                end
            end
        end
    end
    return ClosestTarget
end

--// RenderStepped Loop for Smooth Camera Lock
RunService.RenderStepped:Connect(function()
    if States.Aimbot then
        local Target = GetClosestPlayer()
        if Target then
            Camera.CFrame = CFrame.new(Camera.CFrame.Position, Target.Position)
        end
    end
end)

--// Mobile Fly Logic
local FlyVelocity
local FlyGyro

local function UpdateFly()
    local Character = LocalPlayer.Character
    if not Character or not States.Fly then return end
    local RootPart = Character:FindFirstChild("HumanoidRootPart")
    local Humanoid = Character:FindFirstChildOfClass("Humanoid")
    if not RootPart or not Humanoid then return end

    if not FlyVelocity or FlyVelocity.Parent ~= RootPart then
        FlyVelocity = Instance.new("BodyVelocity")
        FlyVelocity.MaxForce = Vector3.new(9e9, 9e9, 9e9)
        FlyVelocity.Parent = RootPart
    end

    if not FlyGyro or FlyGyro.Parent ~= RootPart then
        FlyGyro = Instance.new("BodyGyro")
        FlyGyro.MaxTorque = Vector3.new(9e9, 9e9, 9e9)
        FlyGyro.Parent = RootPart
    end

    FlyGyro.CFrame = Camera.CFrame
    if Humanoid.MoveDirection.Magnitude > 0 then
        FlyVelocity.Velocity = Humanoid.MoveDirection * States.FlySpeed
    else
        FlyVelocity.Velocity = Vector3.new(0, 0.1, 0)
    end
end

RunService.RenderStepped:Connect(UpdateFly)

--// UI Buttons Logic
AimbotBtn.MouseButton1Click:Connect(function()
    States.Aimbot = not States.Aimbot
    if States.Aimbot then
        AimbotBtn.Text = "Aimbot: ON"
        AimbotBtn.BackgroundColor3 = Color3.fromRGB(50, 180, 50)
    else
        AimbotBtn.Text = "Aimbot: OFF"
        AimbotBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50)
    end
end)

FlyBtn.MouseButton1Click:Connect(function()
    States.Fly = not States.Fly
    if States.Fly then
        FlyBtn.Text = "Fly: ON"
        FlyBtn.BackgroundColor3 = Color3.fromRGB(50, 180, 50)
    else
        FlyBtn.Text = "Fly: OFF"
        FlyBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 50)
        if FlyVelocity then FlyVelocity:Destroy() end
        if FlyGyro then FlyGyro:Destroy() end
    end
end)

SpeedInput.FocusLost:Connect(function()
    local NumericSpeed = tonumber(SpeedInput.Text:match("%d+"))
    if NumericSpeed then
        States.FlySpeed = NumericSpeed
        SpeedInput.Text = "Fly Speed: " .. tostring(NumericSpeed)
    else
        SpeedInput.Text = "Fly Speed: " .. tostring(States.FlySpeed)
    end
end)

Features & Information

Fly and aimbot

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts