-- // Configuration
local Settings = {
AimbotEnabled = true,
TargetPart = "HumanoidRootPart", -- "Head", "LowerTorso", etc.
-- Smoothness & FOV
Smoothness = 0.15, -- Lower = Faster tracking, Higher = Smoother tracking
FieldOfView = 130,
-- FOV Circle Visuals
ShowFovCircle = true,
FovColor = Color3.fromRGB(255, 85, 85),
FovThickness = 1.5,
FovFilled = false
}
-- // Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- // State Variables
local IsLocking = false
local GuiVisible = true
-- // Drawing API Setup (FOV Circle)
local FovCircle = Drawing.new("Circle")
FovCircle.Color = Settings.FovColor
FovCircle.Thickness = Settings.FovThickness
FovCircle.Filled = Settings.FovFilled
FovCircle.Radius = Settings.FieldOfView
FovCircle.Visible = Settings.ShowFovCircle
-- // Screen GUI Setup
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "MobileAimbotGui"
ScreenGui.Parent = CoreGui
ScreenGui.ResetOnSpawn = false
-- // Main Configuration Panel
local MainFrame = Instance.new("Frame")
local Title = Instance.new("TextLabel")
local ToggleButton = Instance.new("TextButton")
local InfoLabel = Instance.new("TextLabel")
MainFrame.Name = "MainFrame"
MainFrame.Parent = ScreenGui
MainFrame.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
MainFrame.Position = UDim2.new(0.05, 0, 0.25, 0)
MainFrame.Size = UDim2.new(0, 200, 0, 140)
MainFrame.Active = true
MainFrame.Draggable = true -- Draggable config window
Title.Name = "Title"
Title.Parent = MainFrame
Title.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
Title.Size = UDim2.new(1, 0, 0, 35)
Title.Font = Enum.Font.SourceSansBold
Title.Text = "MOBILE AIMBOT"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextSize = 16
ToggleButton.Name = "ToggleButton"
ToggleButton.Parent = MainFrame
ToggleButton.BackgroundColor3 = Color3.fromRGB(0, 160, 80)
ToggleButton.Position = UDim2.new(0.05, 0, 0.35, 0)
ToggleButton.Size = UDim2.new(0.9, 0, 0, 40)
ToggleButton.Font = Enum.Font.SourceSansBold
ToggleButton.Text = "Aimbot: ON"
ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
ToggleButton.TextSize = 16
InfoLabel.Name = "InfoLabel"
InfoLabel.Parent = MainFrame
InfoLabel.BackgroundTransparency = 1
InfoLabel.Position = UDim2.new(0.05, 0, 0.7, 0)
InfoLabel.Size = UDim2.new(0.9, 0, 0, 30)
InfoLabel.Font = Enum.Font.SourceSans
InfoLabel.Text = "Tap Lock Button to Toggle"
InfoLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
InfoLabel.TextSize = 14
-- // Mobile Action Buttons
local MobileControls = Instance.new("Frame")
local LockButton = Instance.new("TextButton")
local MenuToggle = Instance.new("TextButton")
MobileControls.Name = "MobileControls"
MobileControls.Parent = ScreenGui
MobileControls.BackgroundTransparency = 1
MobileControls.Size = UDim2.new(1, 0, 1, 0)
MobileControls.Selectable = false
-- Aim Lock Button (Draggable & Toggleable)
LockButton.Name = "LockButton"
LockButton.Parent = MobileControls
LockButton.BackgroundColor3 = Color3.fromRGB(255, 60, 60)
LockButton.BackgroundTransparency = 0.3
LockButton.Position = UDim2.new(0.75, 0, 0.5, 0)
LockButton.Size = UDim2.new(0, 75, 0, 75)
LockButton.Font = Enum.Font.SourceSansBold
LockButton.Text = "LOCK: OFF"
LockButton.TextColor3 = Color3.fromRGB(255, 255, 255)
LockButton.TextSize = 14
LockButton.ZIndex = 10
LockButton.Active = true
LockButton.Draggable = true -- Employs Roblox's native UI dragging for mobile mechanics
local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0.5, 0)
UICorner.Parent = LockButton
-- Menu Visibility Button
MenuToggle.Name = "MenuToggle"
MenuToggle.Parent = MobileControls
MenuToggle.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
MenuToggle.BackgroundTransparency = 0.4
MenuToggle.Position = UDim2.new(0.85, 0, 0.02, 0)
MenuToggle.Size = UDim2.new(0, 60, 0, 30)
MenuToggle.Font = Enum.Font.SourceSansBold
MenuToggle.Text = "MENU"
MenuToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
MenuToggle.TextSize = 14
local UICorner2 = Instance.new("UICorner")
UICorner2.CornerRadius = UDim.new(0.2, 0)
UICorner2.Parent = MenuToggle
-- // Button Logic & Functionality
-- Main Config Menu Toggle
ToggleButton.MouseButton1Click:Connect(function()
Settings.AimbotEnabled = not Settings.AimbotEnabled
if Settings.AimbotEnabled then
ToggleButton.Text = "Aimbot: ON"
ToggleButton.BackgroundColor3 = Color3.fromRGB(0, 160, 80)
FovCircle.Visible = Settings.ShowFovCircle
LockButton.Visible = true
else
ToggleButton.Text = "Aimbot: OFF"
ToggleButton.BackgroundColor3 = Color3.fromRGB(160, 0, 0)
FovCircle.Visible = false
LockButton.Visible = false
IsLocking = false
LockButton.Text = "LOCK: OFF"
LockButton.BackgroundColor3 = Color3.fromRGB(255, 60, 60)
end
end)
-- Menu Minimize Toggle
MenuToggle.MouseButton1Click:Connect(function()
GuiVisible = not GuiVisible
MainFrame.Visible = GuiVisible
end)
-- Tap to Toggle Lock State (Instead of hold)
LockButton.MouseButton1Click:Connect(function()
if not Settings.AimbotEnabled then return end
IsLocking = not IsLocking
if IsLocking then
LockButton.Text = "LOCK: ON"
LockButton.BackgroundColor3 = Color3.fromRGB(0, 180, 255) -- Changes blue when active
LockButton.BackgroundTransparency = 0.1
else
LockButton.Text = "LOCK: OFF"
LockButton.BackgroundColor3 = Color3.fromRGB(255, 60, 60) -- Turns back red when disabled
LockButton.BackgroundTransparency = 0.3
end
end)
-- // Core Logic Functions
local function GetClosestPlayer()
local MaximumDistance = Settings.FieldOfView
local TargetPlayer = nil
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild(Settings.TargetPart) and player.Character:FindFirstChildOfClass("Humanoid") then
if player.Character:FindFirstChildOfClass("Humanoid").Health > 0 then
local ScreenPosition, OnScreen = Camera:WorldToScreenPoint(player.Character[Settings.TargetPart].Position)
if OnScreen then
local ScreenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
local Distance = (Vector2.new(ScreenPosition.X, ScreenPosition.Y) - ScreenCenter).Magnitude
if Distance < MaximumDistance then
MaximumDistance = Distance
TargetPlayer = player
end
end
end
end
end
return TargetPlayer
end
-- // Main Tracking Loop
RunService.RenderStepped:Connect(function()
-- Center the FOV circle on the viewport
local ScreenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
FovCircle.Position = ScreenCenter
if Settings.AimbotEnabled and IsLocking then
local Target = GetClosestPlayer()
if Target and Target.Character and Target.Character:FindFirstChild(Settings.TargetPart) then
local TargetPosition = Target.Character[Settings.TargetPart].Position
local CurrentCameraCFrame = Camera.CFrame
-- Smooth camera tracking via Linear Interpolation (Lerp)
local TargetCFrame = CFrame.new(CurrentCameraCFrame.Position, TargetPosition)
Camera.CFrame = CurrentCameraCFrame:Lerp(TargetCFrame, Settings.Smoothness)
end
end
end)
Comments
Make sure to comment if the script are working for some of y'all's executor