AimControl V1
Key RequiredUniversal

AimControl V1

Universal ScriptAbon0dandedAbon0danded 4.5K views 142 executesUpdated Mar 20, 2025
Unrated
00
Lua Script•522 lines (17557 chars)
local version = "V1"
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
local Window = Rayfield:CreateWindow({
   Name = "AimControl",
   Icon = "Crosshair",
   LoadingTitle = "AimControl " .. version,
   LoadingSubtitle = "by CovronArchives",
   Theme = { 
        TextColor = Color3.fromRGB(255, 255, 255), 
        Background = Color3.fromRGB(5, 5, 5),
        Topbar = Color3.fromRGB(10, 10, 10),
        Shadow = Color3.fromRGB(255, 255, 255),
        NotificationBackground = Color3.fromRGB(10, 10, 10),
        NotificationActionsBackground = Color3.fromRGB(40, 40, 40),
        TabBackground = Color3.fromRGB(15, 15, 15),
        TabStroke = Color3.fromRGB(20, 20, 20),
        TabBackgroundSelected = Color3.fromRGB(25, 25, 25),
        TabTextColor = Color3.fromRGB(255, 255, 255),
        SelectedTabTextColor = Color3.fromRGB(255, 255, 255),
        ElementBackground = Color3.fromRGB(10, 10, 10),
        ElementBackgroundHover = Color3.fromRGB(15, 15, 15),
        SecondaryElementBackground = Color3.fromRGB(8, 8, 8),
        ElementStroke = Color3.fromRGB(20, 20, 20),
        SecondaryElementStroke = Color3.fromRGB(15, 15, 15),
        SliderBackground = Color3.fromRGB(50, 50, 50),
        SliderProgress = Color3.fromRGB(100, 100, 100),
        SliderStroke = Color3.fromRGB(80, 80, 80),
        ToggleBackground = Color3.fromRGB(12, 12, 12),
        ToggleEnabled = Color3.fromRGB(80, 80, 80),
        ToggleDisabled = Color3.fromRGB(30, 30, 30),
        ToggleEnabledStroke = Color3.fromRGB(120, 120, 120),
        ToggleDisabledStroke = Color3.fromRGB(20, 20, 20),
        ToggleEnabledOuterStroke = Color3.fromRGB(140, 140, 140),
        ToggleDisabledOuterStroke = Color3.fromRGB(10, 10, 10),
        DropdownSelected = Color3.fromRGB(12, 12, 12),
        DropdownUnselected = Color3.fromRGB(8, 8, 8),
        InputBackground = Color3.fromRGB(10, 10, 10),
        InputStroke = Color3.fromRGB(30, 30, 30),
        PlaceholderColor = Color3.fromRGB(255, 255, 255)
   },
   ConfigurationSaving = {
      Enabled = true,
      FolderName = "AimControl",
      FileName = "AimControlConfiguration"
   },
})

local UserInputService = game:GetService("UserInputService")

if UserInputService.KeyboardEnabled and UserInputService.MouseEnabled then
    Rayfield:Notify({
   Title = "AimControl PC Detector",
   Content = "Beware that some of the UI may not match your window size.",
   Duration = 6.5,
   Image = "Crosshair",
})
else
Rayfield:Notify({
   Title = "AimControl Mobile Detector",
   Content = "Beware that some of the UI may not match your window size.",
   Duration = 6.5,
   Image = "Crosshair",
})
end

local aim = Window:CreateTab("AIM", 0)
local credits = Window:CreateTab("CREDITS", 0)
local config = Window:CreateTab("CONFIGURATION", 0)

local Label = credits:CreateLabel("curator: @debugged_.", "user")
local Label = credits:CreateLabel("ideas: epicfiedten, zerokoolaid", "users")
local Label = config:CreateLabel("delete configuration will remove your current configuration", "Trash")

local Button = config:CreateButton({
   Name = "DELETE CONFIGURATION",
   Callback = function()
   delfolder("AimControl")
   wait(1)
   if not isfolder("AimControl") then
      Rayfield:Notify({
   Title = "DELETED CONFIGURATION",
   Content = "a new configuration will now load up on start",
   Duration = 6.5,
   Image = "Trash",
})
   end
   end,
})

local Section = aim:CreateSection("CameraBot")

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera

local CameraLockEnabled = false
local HumanizedAimbotEnabled = false
local Connection
local LastTarget = nil

local function getNearestPlayer()
    local closestPlayer = nil
    local shortestDistance = math.huge

    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character then
            local char = player.Character
            local head = char:FindFirstChild("Head")
            if head then
                local distance = (LocalPlayer.Character.HumanoidRootPart.Position - head.Position).Magnitude
                if distance < shortestDistance then
                    closestPlayer = char
                    shortestDistance = distance
                end
            end
        end
    end
    return closestPlayer
end

local function smoothLookAt(targetPosition, speed)
    local newCFrame = CFrame.new(Camera.CFrame.Position, targetPosition)
    local tween = TweenService:Create(Camera, TweenInfo.new(speed, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {CFrame = newCFrame})
    tween:Play()
end

local function applyHumanizedAim(targetCharacter)
    local targetHead = targetCharacter:FindFirstChild("Head")
    if targetHead then
        local randomOffset = Vector3.new(math.random(-2, 2) * 0.1, math.random(-2, 2) * 0.1, 0)
        local randomSpeed = math.random(5, 10) * 0.01

        smoothLookAt(targetHead.Position + randomOffset, randomSpeed)
    end
end

local function applyCameraJiggle()
    local originalCFrame = Camera.CFrame
    for _ = 1, 2 do
        local shakeOffset = Vector3.new(math.random(-1, 1) * 0.2, math.random(-1, 1) * 0.2, 0)
        Camera.CFrame = originalCFrame * CFrame.new(shakeOffset)
        task.wait(0.01)
    end
    Camera.CFrame = originalCFrame
end

local function switchTargetDelay(targetCharacter)
    task.wait(0.04)

    local currentCFrame = Camera.CFrame
    local randomLookAway = currentCFrame * CFrame.Angles(0, math.rad(math.random(-30, 30)), 0)
    Camera.CFrame = randomLookAway
    task.wait(0.05)
    applyCameraJiggle()
    applyHumanizedAim(targetCharacter)
end

local Toggle = aim:CreateToggle({
    Name = "AIMBOT",
    CurrentValue = false,
    Flag = "aimbot",
    Callback = function(Value)
        CameraLockEnabled = Value
        if CameraLockEnabled then
            Connection = RunService.RenderStepped:Connect(function()
                local targetCharacter = getNearestPlayer()
                if targetCharacter and targetCharacter ~= LastTarget then
                    switchTargetDelay(targetCharacter)
                    LastTarget = targetCharacter
                end
                if targetCharacter then
                    local targetHead = targetCharacter:FindFirstChild("Head")
                    if HumanizedAimbotEnabled then
                        applyHumanizedAim(targetCharacter)
                    elseif targetHead then
                        Camera.CFrame = CFrame.new(Camera.CFrame.Position, targetHead.Position)
                    end
                end
            end)
        else
            if Connection then
                Connection:Disconnect()
                Connection = nil
            end
        end
    end
})

local HumanizedToggle = aim:CreateToggle({
    Name = "HUMANIZATION",
    CurrentValue = false,
    Flag = "human",
    Callback = function(Value)
        HumanizedAimbotEnabled = Value
    end
})

local TriggerbotEnabled = false
local TriggerbotConnection

local FOVCircle = Drawing.new("Circle")
FOVCircle.Color = Color3.fromRGB(255, 255, 255)
FOVCircle.Thickness = 3
FOVCircle.NumSides = 100
FOVCircle.Radius = 50
FOVCircle.Filled = true
FOVCircle.Transparency = 0.8
FOVCircle.Visible = false

local UserInputService = game:GetService("UserInputService")
local VirtualInputManager = game:GetService("VirtualInputManager")

local TriggerbotToggle = aim:CreateToggle({
    Name = "TRIGGERBOT",
    CurrentValue = false,
    Flag = "triggerbot",
    Callback = function(Value)
        TriggerbotEnabled = Value
        FOVCircle.Visible = Value
        if TriggerbotEnabled then
            TriggerbotConnection = RunService.RenderStepped:Connect(function()
                local screenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
                FOVCircle.Position = screenCenter
                local targetFound = false
                for _, player in pairs(Players:GetPlayers()) do
                    if player ~= LocalPlayer and player.Character then
                        local char = player.Character
                        local head = char:FindFirstChild("Head")
                        if head then
                            local headPosition, onScreen = Camera:WorldToViewportPoint(head.Position)
                            local distance = (Vector2.new(headPosition.X, headPosition.Y) - screenCenter).Magnitude
                            if onScreen and distance <= FOVCircle.Radius then
                                targetFound = true
                                break
                            end
                        end
                    end
                end
                if targetFound then
                    VirtualInputManager:SendMouseButtonEvent(screenCenter.X, screenCenter.Y, 0, true, game, 1)
                    task.wait(0.03)
                    VirtualInputManager:SendMouseButtonEvent(screenCenter.X, screenCenter.Y, 0, false, game, 1)
                end
            end)
        else
            if TriggerbotConnection then
                TriggerbotConnection:Disconnect()
                TriggerbotConnection = nil
            end
        end
    end
})

local ColorPicker = aim:CreateColorPicker({
    Name = "TRIGGERBOT COLOR", 
    Color = Color3.fromRGB(255, 255, 255),  
    Flag = "triggerbotcolor", 
    Callback = function(Value)
        FOVCircle.Color = Value  
    end
})

local PlayerFaceLockToggle = aim:CreateToggle({
    Name = "PLAYER LOCK",
    CurrentValue = false,
    Flag = "playerlock",
    Callback = function(Value)
        CameraLockEnabled = Value
        if CameraLockEnabled then
            PlayerFaceLockConnection = RunService.RenderStepped:Connect(function()
                local targetCharacter = getNearestPlayer()
                if targetCharacter then
                    local targetHead = targetCharacter:FindFirstChild("Head")
                    if targetHead then
                        local targetPosition = Vector3.new(targetHead.Position.X, LocalPlayer.Character.HumanoidRootPart.Position.Y, targetHead.Position.Z)
                        LocalPlayer.Character.HumanoidRootPart.CFrame = CFrame.lookAt(LocalPlayer.Character.HumanoidRootPart.Position, targetPosition)
                    end
                end
            end)
        else
            if PlayerFaceLockConnection then
                PlayerFaceLockConnection:Disconnect()
                PlayerFaceLockConnection = nil
            end
        end
    end
})

local Slider = aim:CreateSlider({
   Name = "TRIGGERBOT TRANSPARENCY",
   Range = {0, 1},
   Increment = 0.1,
   Suffix = "transparency",
   CurrentValue = 0,
   Flag = "triggerbottransparency", 
   Callback = function(Value)
   FOVCircle.Transparency = Value
   end,
})

local Slider = aim:CreateSlider({
   Name = "TRIGGERBOT SIZE",
   Range = {0, 300},
   Increment = 1,
   Suffix = "size",
   CurrentValue = 25,
   Flag = "triggerbotsize", 
   Callback = function(Value)
   FOVCircle.Radius = Value
   end,
})

local users = Window:CreateTab("USERS", 0)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local highlights = {}

local Input = users:CreateInput({
    Name = "TARGET",
    CurrentValue = "",
    PlaceholderText = "TARGET USER",
    RemoveTextAfterFocusLost = false,
    Flag = "target",
    Callback = function(Text)
        for _, player in pairs(Players:GetPlayers()) do
            local character = player.Character
            if character then
                local highlight = character:FindFirstChild("Highlight")
                if not highlight then
                    highlight = Instance.new("Highlight")
                    highlight.Parent = character
                    highlight.FillTransparency = 1
                    highlight.OutlineColor = Color3.fromRGB(255, 255, 255) 
                    highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
                    highlights[player] = highlight
                end

                if Text ~= "" and (string.find(string.lower(player.Name), string.lower(Text), 1, true) 
                    or string.find(string.lower(player.DisplayName), string.lower(Text), 1, true)) then
                    highlight.Enabled = true
                else
                    highlight.Enabled = false
                end
            end
        end
    end,
})

local ColorPicker = users:CreateColorPicker({
    Name = "TARGET COLOR",
    Color = Color3.fromRGB(255,255,255),
    Flag = "targetcolor", 
    Callback = function(Value)
        for _, highlight in pairs(highlights) do
            if highlight then
                highlight.OutlineColor = Value
            end
        end
    end
})

--///////:()()(:::/:::///:::::::::://////:::://////////:/:/:/:/:/:/:://:://::/::/::/::

local RunService = game:GetService("RunService")
local camera = workspace.CurrentCamera

local RunService = game:GetService("RunService")
local camera = game.Workspace.CurrentCamera

local crosshairSize = 10
local crosshairThickness = 3
local crosshairColor = Color3.fromRGB(255, 255, 255)
local crosshairType = "Normal" 
local targetSize = crosshairSize
local animationProgress = 1 
local transitioning = false

local lines = {
    line1 = Drawing.new("Line"),
    line2 = Drawing.new("Line"),
    line3 = Drawing.new("Line"),
    line4 = Drawing.new("Line")
}

local circle = Drawing.new("Circle")
circle.Visible = false
circle.Color = crosshairColor
circle.Radius = crosshairSize
circle.Thickness = crosshairThickness
circle.Filled = false

local function animateSize()
    if transitioning then
        animationProgress = math.min(animationProgress + 0.05, 1)
        local sineEase = math.sin(animationProgress * (math.pi / 2))
        crosshairSize = targetSize * sineEase
        if animationProgress >= 1 then
            transitioning = false
        end
    end
end

local function updateCrosshair()
    animateSize()
    local center = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2)
    local radius = crosshairSize

    for _, line in pairs(lines) do
        line.Visible = false
    end
    circle.Visible = false

    if crosshairType == "CROSS" then
        lines.line1.From = center + Vector2.new(-radius, -radius)
        lines.line1.To = center + Vector2.new(radius, radius)
        lines.line2.From = center + Vector2.new(-radius, radius)
        lines.line2.To = center + Vector2.new(radius, -radius)
        lines.line1.Visible = true
        lines.line2.Visible = true
    elseif crosshairType == "ROUND" then
        circle.Position = center
        circle.Radius = radius
        circle.Visible = true
    elseif crosshairType == "BOX" then
        lines.line1.From = center + Vector2.new(-radius, -radius)
        lines.line1.To = center + Vector2.new(radius, -radius)
        lines.line2.From = center + Vector2.new(radius, -radius)
        lines.line2.To = center + Vector2.new(radius, radius)
        lines.line3.From = center + Vector2.new(radius, radius)
        lines.line3.To = center + Vector2.new(-radius, radius)
        lines.line4.From = center + Vector2.new(-radius, radius)
        lines.line4.To = center + Vector2.new(-radius, -radius)
        lines.line1.Visible = true
        lines.line2.Visible = true
        lines.line3.Visible = true
        lines.line4.Visible = true
    end

    for _, line in pairs(lines) do
        line.Thickness = crosshairThickness
        line.Color = crosshairColor
    end

    circle.Thickness = crosshairThickness
    circle.Color = crosshairColor
end

local connection
local Toggle = aim:CreateToggle({
    Name = "CROSSHAIR",
    CurrentValue = false,
    Flag = "mobilecrosshair",
    Callback = function(Value)
        if Value then
            connection = RunService.RenderStepped:Connect(updateCrosshair)
        else
            for _, line in pairs(lines) do
                line.Visible = false
            end
            circle.Visible = false
            if connection then
                connection:Disconnect()
                connection = nil
            end
        end
    end
})

local SizeSlider = aim:CreateSlider({
    Name = "CROSSHAIR SIZE",
    Range = {5, 50}, 
    Increment = 1,
    Suffix = "pixels",
    CurrentValue = crosshairSize,
    Flag = "crosshairsize",
    Callback = function(Value)
        targetSize = Value
        animationProgress = 0
        transitioning = true
    end
})

local ThicknessSlider = aim:CreateSlider({
    Name = "CROSSHAIR THICKNESS",
    Range = {1, 10}, 
    Increment = 1,
    Suffix = "pixels",
    CurrentValue = crosshairThickness,
    Flag = "crosshairthickness",
    Callback = function(Value)
        crosshairThickness = Value
    end
})

local ColorPicker = aim:CreateColorPicker({
    Name = "CROSSHAIR COLOR",
    Color = crosshairColor,
    Flag = "crosshaircolor",
    Callback = function(Value)
        crosshairColor = Value
    end
})

local Dropdown = aim:CreateDropdown({
    Name = "CROSSHAIR TYPE",
    Options = {"ROUND", "CROSS", "BOX"},
    CurrentOption = {"Normal"},
    MultipleOptions = false,
    Flag = "crosshairtype",
    Callback = function(Options)
        if crosshairType ~= Options[1] then
            crosshairType = Options[1]
            targetSize = crosshairSize * 1.5
            animationProgress = 0
            transitioning = true
        end
    end
})
Rayfield:LoadConfiguration()

Features & Information

AIMBOT HUMANIZATION TARGET ESP (i should've added an ESP.) PLAYER FACING (makes your player face an player) COLORS (target color, crosshair color, etc) CROSSHAIR (for mobile or if your computer, for games with no crosshair [SAFE FEATURE]) THERE ARE MORE BTW hello, i didn't create aimcontrol, it was by my friend debugged_., i kinda helped though, this is version 1.0.0 so don't expect aimconntrol to be good lol (aimcontrol*) tags: #opaimbot #aimbot #triggerbot #easyaimbot #op
#aim#aimbot#esp#bot#triggerbot

Community Comments (3)

powerboypowerboyMar 20, 2025(edited)

Cool lil script

godexploitergodexploiterMar 21, 2025(edited)

it works decently

jwilson01100jwilson01100Apr 5, 2025

@godexploiter why is ur pfp a * bruh :sob:

More Scripts for Universal Scripts