
KeylessUniversal

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



