SPIKE SCRIPTS AIMBOT
Key RequiredUniversal

SPIKE SCRIPTS AIMBOT

Universal ScriptKelspikescriptsKelspikescripts 543 views 4.6K executesUpdated Sep 15, 2026
Unrated
00
Lua Script•417 lines (14621 chars)
-- Spike Scripts | Ultimate Universal Hub v4.2 (Manual Refresh + Mode Switcher + Toggle UI)
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera

-- Clear Old UI
if PlayerGui:FindFirstChild("SpikeProHub") then
    PlayerGui.SpikeProHub:Destroy()
end

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "SpikeProHub"
ScreenGui.Parent = PlayerGui
ScreenGui.ResetOnSpawn = false
ScreenGui.DisplayOrder = 999

-- Setting Variables
local aimOn = false
local espOn = false
local wallCheckOn = false
local aimbotLineOn = false
local fovSize = 150
local fovThickness = 1.5
local smoothValue = 0.15
local rainbowOn = false
local targetModeIndex = 1
local targetModes = {"Closest in FOV", "Closest Overall (Direct)"}

-- FOV Position Mode: "MOBILE" (Screen Center) or "PC" (Mouse Cursor)
local fovPositionMode = (UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled) and "MOBILE" or "PC"

-- FOV Color List + Rainbow
local fovColors = {
    {name = "Green", color = Color3.fromRGB(0, 255, 127)},
    {name = "Red", color = Color3.fromRGB(255, 50, 50)},
    {name = "Blue", color = Color3.fromRGB(50, 150, 255)},
    {name = "Purple", color = Color3.fromRGB(180, 50, 255)},
    {name = "White", color = Color3.fromRGB(255, 255, 255)},
    {name = "Rainbow", color = "RAINBOW"}
}
local currentColorIndex = 1

-- Drawings
local FOVCircle, AimbotLine
pcall(function()
    FOVCircle = Drawing.new("Circle")
    FOVCircle.Visible = false
    FOVCircle.Transparency = 0.7
    FOVCircle.Thickness = fovThickness
    FOVCircle.Color = fovColors[currentColorIndex].color
    FOVCircle.Filled = false
    FOVCircle.Radius = fovSize

    AimbotLine = Drawing.new("Line")
    AimbotLine.Visible = false
    AimbotLine.Transparency = 0.7
    AimbotLine.Thickness = 1.5
    AimbotLine.Color = Color3.fromRGB(255, 255, 255)
end)

-- 1. Floating Toggle Button
local ToggleButton = Instance.new("TextButton")
ToggleButton.Parent = ScreenGui
ToggleButton.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
ToggleButton.Position = UDim2.new(0, 20, 0.4, 0)
ToggleButton.Size = UDim2.new(0, 50, 0, 50)
ToggleButton.TextColor3 = Color3.fromRGB(0, 255, 127)
ToggleButton.TextSize = 18
ToggleButton.Font = Enum.Font.GothamBold
ToggleButton.Text = "⚡"
ToggleButton.Active = true
ToggleButton.Draggable = true

local ToggleCorner = Instance.new("UICorner")
ToggleCorner.CornerRadius = UDim.new(1, 0)
ToggleCorner.Parent = ToggleButton

local ToggleStroke = Instance.new("UIStroke")
ToggleStroke.Parent = ToggleButton
ToggleStroke.Color = Color3.fromRGB(0, 255, 127)
ToggleStroke.Thickness = 2

-- 2. Main Menu Window
local Main = Instance.new("Frame")
Main.Parent = ScreenGui
Main.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
Main.Position = UDim2.new(0.5, -210, 0.5, -270)
Main.Size = UDim2.new(0, 420, 0, 540)
Main.Active = true
Main.Draggable = true
Main.Visible = true

ToggleButton.MouseButton1Click:Connect(function()
    Main.Visible = not Main.Visible
end)

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 16)
MainCorner.Parent = Main

local MainStroke = Instance.new("UIStroke")
MainStroke.Parent = Main
MainStroke.Color = Color3.fromRGB(40, 40, 60)
MainStroke.Thickness = 2

-- Top Bar
local TopBar = Instance.new("Frame")
TopBar.Parent = Main
TopBar.Size = UDim2.new(1, 0, 0, 50)
TopBar.BackgroundColor3 = Color3.fromRGB(22, 22, 30)

local TopBarCorner = Instance.new("UICorner")
TopBarCorner.CornerRadius = UDim.new(0, 16)
TopBarCorner.Parent = TopBar

local FixFrame = Instance.new("Frame")
FixFrame.Parent = TopBar
FixFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 30)
FixFrame.Position = UDim2.new(0, 0, 0.5, 0)
FixFrame.Size = UDim2.new(1, 0, 0.5, 0)
FixFrame.BorderSizePixel = 0

local Title = Instance.new("TextLabel")
Title.Parent = TopBar
Title.Size = UDim2.new(1, -20, 1, 0)
Title.Position = UDim2.new(0, 15, 0, 0)
Title.BackgroundTransparency = 1
Title.TextColor3 = Color3.fromRGB(0, 255, 127)
Title.TextSize = 16
Title.Font = Enum.Font.GothamBold
Title.Text = "⚡ Spike Scripts | Pro Hub v4.2"
Title.TextXAlignment = Enum.TextXAlignment.Left

-- Scroll Container
local Container = Instance.new("ScrollingFrame")
Container.Parent = Main
Container.BackgroundTransparency = 1
Container.Position = UDim2.new(0, 15, 0, 65)
Container.Size = UDim2.new(1, -30, 1, -75)
Container.CanvasSize = UDim2.new(0, 0, 0, 780)
Container.ScrollBarThickness = 4
Container.ScrollBarImageColor3 = Color3.fromRGB(0, 255, 127)

local UIList = Instance.new("UIListLayout")
UIList.Parent = Container
UIList.SortOrder = Enum.SortOrder.LayoutOrder
UIList.Padding = UDim.new(0, 10)

-- Button Builder
local function CreateButton(text, defaultColor, callback)
    local btn = Instance.new("TextButton")
    btn.Parent = Container
    btn.BackgroundColor3 = defaultColor
    btn.Size = UDim2.new(1, 0, 0, 45)
    btn.TextColor3 = Color3.fromRGB(240, 240, 240)
    btn.TextSize = 14
    btn.Font = Enum.Font.GothamMedium
    btn.Text = text

    local bc = Instance.new("UICorner")
    bc.CornerRadius = UDim.new(0, 10)
    bc.Parent = btn

    local stroke = Instance.new("UIStroke")
    stroke.Parent = btn
    stroke.Color = Color3.fromRGB(50, 50, 70)
    stroke.Thickness = 1

    btn.MouseButton1Click:Connect(function()
        callback(btn)
    end)
    return btn
end

-- ESP Functions
local function ApplyESPToCharacter(char)
    if not char then return end
    for _, v in ipairs(char:GetChildren()) do
        if v.Name == "SpikeRealESP" then
            v:Destroy()
        end
    end
    
    local h = Instance.new("Highlight")
    h.Name = "SpikeRealESP"
    h.Adornee = char
    h.FillColor = Color3.fromRGB(255, 30, 30)
    h.OutlineColor = Color3.fromRGB(255, 255, 255)
    h.FillTransparency = 0.4
    h.OutlineTransparency = 0
    h.Parent = char
end

local function RefreshAllESP()
    for _, p in ipairs(Players:GetPlayers()) do
        if p ~= LocalPlayer and p.Character then
            ApplyESPToCharacter(p.Character)
        end
    end
end

-- Menu Buttons
CreateButton("ESP (Auto Refresh): OFF", Color3.fromRGB(25, 25, 35), function(btn)
    espOn = not espOn
    btn.Text = espOn and "ESP (Auto Refresh): ON" or "ESP (Auto Refresh): OFF"
    btn.BackgroundColor3 = espOn and Color3.fromRGB(0, 130, 60) or Color3.fromRGB(25, 25, 35)
    
    if espOn then
        RefreshAllESP()
    else
        for _, p in ipairs(Players:GetPlayers()) do
            if p.Character then
                for _, v in ipairs(p.Character:GetChildren()) do
                    if v.Name == "SpikeRealESP" then v:Destroy() end
                end
            end
        end
    end
end)

CreateButton("🔄 Manual ESP Refresh", Color3.fromRGB(50, 50, 80), function()
    RefreshAllESP()
end)

CreateButton("Aimbot: OFF", Color3.fromRGB(25, 25, 35), function(btn)
    aimOn = not aimOn
    btn.Text = aimOn and "Aimbot: ON" or "Aimbot: OFF"
    btn.BackgroundColor3 = aimOn and Color3.fromRGB(0, 130, 60) or Color3.fromRGB(25, 25, 35)
    if FOVCircle then FOVCircle.Visible = aimOn end
    if AimbotLine and not aimOn then AimbotLine.Visible = false end
end)

CreateButton("Aimbot Line: OFF", Color3.fromRGB(25, 25, 35), function(btn)
    aimbotLineOn = not aimbotLineOn
    btn.Text = aimbotLineOn and "Aimbot Line: ON" or "Aimbot Line: OFF"
    btn.BackgroundColor3 = aimbotLineOn and Color3.fromRGB(0, 130, 60) or Color3.fromRGB(25, 25, 35)
    if AimbotLine and not aimbotLineOn then AimbotLine.Visible = false end
end)

CreateButton("Target Mode: " .. targetModes[targetModeIndex], Color3.fromRGB(25, 25, 35), function(btn)
    targetModeIndex = targetModeIndex + 1
    if targetModeIndex > #targetModes then targetModeIndex = 1 end
    btn.Text = "Target Mode: " .. targetModes[targetModeIndex]
end)

local FovModeBtn = CreateButton("FOV Position: " .. fovPositionMode, Color3.fromRGB(25, 25, 35), function(btn)
    if fovPositionMode == "MOBILE" then
        fovPositionMode = "PC"
    else
        fovPositionMode = "MOBILE"
    end
    btn.Text = "FOV Position: " .. fovPositionMode
end)

CreateButton("WallCheck: OFF", Color3.fromRGB(25, 25, 35), function(btn)
    wallCheckOn = not wallCheckOn
    btn.Text = wallCheckOn and "WallCheck: ON" or "WallCheck: OFF"
    btn.BackgroundColor3 = wallCheckOn and Color3.fromRGB(0, 130, 60) or Color3.fromRGB(25, 25, 35)
end)

local FovSizeBtn = CreateButton("FOV Size: " .. fovSize, Color3.fromRGB(25, 25, 35), function(btn)
    if fovSize == 120 then fovSize = 180
    elseif fovSize == 180 then fovSize = 250
    elseif fovSize == 250 then fovSize = 320
    else fovSize = 120 end
    if FOVCircle then FOVCircle.Radius = fovSize end
    btn.Text = "FOV Size: " .. fovSize
end)

CreateButton("FOV Thickness: " .. fovThickness, Color3.fromRGB(25, 25, 35), function(btn)
    if fovThickness == 1.5 then fovThickness = 2.5
    elseif fovThickness == 2.5 then fovThickness = 4.0
    else fovThickness = 1.5 end
    if FOVCircle then FOVCircle.Thickness = fovThickness end
    btn.Text = "FOV Thickness: " + fovThickness
end)

CreateButton("FOV Color: " .. fovColors[currentColorIndex].name, Color3.fromRGB(25, 25, 35), function(btn)
    currentColorIndex = currentColorIndex + 1
    if currentColorIndex > #fovColors then currentColorIndex = 1 end
    local selected = fovColors[currentColorIndex]
    if selected.color == "RAINBOW" then
        rainbowOn = true
    else
        rainbowOn = false
        if FOVCircle then FOVCircle.Color = selected.color end
    end
    btn.Text = "FOV Color: " .. selected.name
end)

CreateButton("Aimbot Smooth: Medium", Color3.fromRGB(25, 25, 35), function(btn)
    if smoothValue == 0.15 then
        smoothValue = 0.30
        btn.Text = "Aimbot Smooth: Fast / Hard"
    elseif smoothValue == 0.30 then
        smoothValue = 1.00
        btn.Text = "Aimbot Smooth: Instant (Snap)"
    else
        smoothValue = 0.15
        btn.Text = "Aimbot Smooth: Smooth"
    end
end)

CreateButton("Close & Destroy Hub", Color3.fromRGB(140, 35, 35), function()
    if FOVCircle then FOVCircle:Remove() end
    if AimbotLine then AimbotLine:Remove() end
    for _, p in ipairs(Players:GetPlayers()) do
        if p.Character then
            for _, v in ipairs(p.Character:GetChildren()) do
                if v.Name == "SpikeRealESP" then v:Destroy() end
            end
        end
    end
    ScreenGui:Destroy()
end)

-- Main Loop
RunService.RenderStepped:Connect(function()
    local screenCenter
    if fovPositionMode == "MOBILE" then
        screenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
    else
        screenCenter = UserInputService:GetMouseLocation()
    end

    if FOVCircle and aimOn then
        FOVCircle.Position = screenCenter
        if rainbowOn then
            local hue = tick() % 5 / 5
            FOVCircle.Color = Color3.fromHSV(hue, 1, 1)
        end
    end

    if espOn then
        for _, p in ipairs(Players:GetPlayers()) do
            if p ~= LocalPlayer then
                local char = p.Character
                if char and char:FindFirstChild("HumanoidRootPart") then
                    if not char:FindFirstChild("SpikeRealESP") then
                        ApplyESPToCharacter(char)
                    end
                end
            end
        end
    end

    if aimOn then
        local closestTarget = nil
        local shortestDist = (targetModeIndex == 1) and fovSize or math.huge
        
        for _, p in ipairs(Players:GetPlayers()) do
            if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("Head") then
                local hum = p.Character:FindFirstChildOfClass("Humanoid")
                if hum and hum.Health > 0 then
                    local head = p.Character.Head
                    
                    local visible = true
                    if wallCheckOn then
                        local origin = Camera.CFrame.Position
                        local direction = (head.Position - origin)
                        local rayParams = RaycastParams.new()
                        rayParams.FilterDescendantsInstances = {LocalPlayer.Character, p.Character}
                        rayParams.FilterType = Enum.RaycastFilterType.Exclude
                        local result = workspace:Raycast(origin, direction, rayParams)
                        if result then visible = false end
                    end
                    
                    if visible then
                        local screenPos, onScreen = Camera:WorldToViewportPoint(head.Position)
                        if onScreen then
                            local head2D = Vector2.new(screenPos.X, screenPos.Y)
                            local dist = (head2D - screenCenter).Magnitude
                            
                            if targetModeIndex == 1 then
                                if dist < shortestDist then
                                    shortestDist = dist
                                    closestTarget = head
                                end
                            else
                                local worldDist = (head.Position - Camera.CFrame.Position).Magnitude
                                if worldDist < shortestDist then
                                    shortestDist = worldDist
                                    closestTarget = head
                                end
                            end
                        end
                    end
                end
            end
        end
        
        if closestTarget then
            local targetCFrame = CFrame.new(Camera.CFrame.Position, closestTarget.Position)
            Camera.CFrame = Camera.CFrame:Lerp(targetCFrame, smoothValue)
            
            if aimbotLineOn and AimbotLine then
                local screenPos, onScreen = Camera:WorldToViewportPoint(closestTarget.Position)
                if onScreen then
                    AimbotLine.From = screenCenter
                    AimbotLine.To = Vector2.new(screenPos.X, screenPos.Y)
                    AimbotLine.Visible = true
                else
                    AimbotLine.Visible = false
                end
            else
                if AimbotLine then AimbotLine.Visible = false end
            end
        else
            if AimbotLine then AimbotLine.Visible = false end
        end
    else
        if AimbotLine then AimbotLine.Visible = false end
    end
end)

Features & Information

● Aimbot ● ESP (If some people are not visible, you need to refresh) ● wallcheck ● for mobile and pc
#Aimbot#Esp

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts