
KeylessUniversal

--// 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)No comments yet for this script.



