--// Aimbot Script Hub for Roblox with Improved UI, Team Check, Wall Check, and Blatant Mode
--// WARNING: This is for educational purposes ONLY. Using exploits in games can result in bans.

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

local AimbotEnabled = false
local TeamCheckEnabled = false
local WallCheckEnabled = false
local BlatantMode = false
local AimSmoothness = 1 -- Increased for more blatant aimbot

-- Create GUI
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Parent = game.CoreGui

local Frame = Instance.new("Frame")
Frame.Size = UDim2.new(0, 220, 0, 350)
Frame.Position = UDim2.new(0, 20, 0, 100)
Frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
Frame.BorderSizePixel = 2
Frame.Parent = ScreenGui
Frame.BackgroundTransparency = 0.2
Frame.Active = true
Frame.Draggable = true

local UIStroke = Instance.new("UIStroke")
UIStroke.Thickness = 2
UIStroke.Color = Color3.fromRGB(255, 255, 255)
UIStroke.Parent = Frame

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, 0, 0, 40)
Title.Text = "Rubix.lua"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 16
Title.Parent = Frame

local function CreateButton(name, position, callback)
    local Button = Instance.new("TextButton")
    Button.Size = UDim2.new(0, 200, 0, 40)
    Button.Position = position
    Button.Text = name .. ": OFF"
    Button.TextColor3 = Color3.fromRGB(255, 255, 255)
    Button.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    Button.Font = Enum.Font.Gotham
    Button.TextSize = 14
    Button.Parent = Frame
    
    local enabled = false
    Button.MouseButton1Click:Connect(function()
        enabled = not enabled
        callback(enabled)
        Button.Text = name .. ": " .. (enabled and "ON" or "OFF")
    end)
    return Button
end

CreateButton("Aimbot", UDim2.new(0, 10, 0, 50), function(state)
    AimbotEnabled = state
end)

CreateButton("Team Check", UDim2.new(0, 10, 0, 100), function(state)
    TeamCheckEnabled = state
end)

CreateButton("Wall Check", UDim2.new(0, 10, 0, 150), function(state)
    WallCheckEnabled = state
end)

CreateButton("Blatant Mode", UDim2.new(0, 10, 0, 200), function(state)
    BlatantMode = state
    AimSmoothness = BlatantMode and 1 or 0.1
end)

function IsVisible(target)
    local origin = Camera.CFrame.Position
    local direction = (target.Position - origin).unit * (target.Position - origin).magnitude
    local raycastParams = RaycastParams.new()
    raycastParams.FilterDescendantsInstances = {LocalPlayer.Character, Camera}
    raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
    local result = Workspace:Raycast(origin, direction, raycastParams)
    return result == nil or result.Instance:IsDescendantOf(target.Parent)
end

function GetClosestPlayer()
    local closestPlayer = nil
    local shortestDistance = math.huge
    
    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("Head") then
            if TeamCheckEnabled and player.Team == LocalPlayer.Team then
                continue
            end
            local head = player.Character.Head
            if WallCheckEnabled and not IsVisible(head) then
                continue
            end
            local screenPosition, onScreen = Camera:WorldToViewportPoint(head.Position)
            if onScreen then
                local distance = (Vector2.new(screenPosition.X, screenPosition.Y) - UserInputService:GetMouseLocation()).magnitude
                if distance < shortestDistance then
                    shortestDistance = distance
                    closestPlayer = head
                end
            end
        end
    end
    
    return closestPlayer
end

RunService.RenderStepped:Connect(function()
    if AimbotEnabled then
        local target = GetClosestPlayer()
        if target then
            local targetPosition = target.Position
            Camera.CFrame = CFrame.new(Camera.CFrame.Position, targetPosition)
        end
    end
end)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: