
Key RequiredUniversal

--[[
VIC HUB v1
Fixed Lock-On + Mobile Support
Made by Vicsclipss
]]
----------------------------------------------------
-- SERVICES
----------------------------------------------------
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local LP = Players.LocalPlayer
----------------------------------------------------
-- DISCORD + KEY
----------------------------------------------------
local DISCORD = "https://discord.gg/2e6Kjzvw"
local KEY = "Vic"
pcall(function()
setclipboard(DISCORD)
end)
----------------------------------------------------
-- LOAD RAYFIELD
----------------------------------------------------
local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))()
local Window = Rayfield:CreateWindow({
Name = "๐ฅ Vic Hub | FPS",
LoadingTitle = "Vic Hub v1",
LoadingSubtitle = "OP FPS System",
KeySystem = true,
KeySettings = {
Title = "Vic Hub Key",
Subtitle = "Get key from Discord",
Note = "Discord copied to clipboard",
FileName = "VicHub",
SaveKey = false,
GrabKeyFromSite = false,
Key = {KEY}
}
})
----------------------------------------------------
-- WELCOME
----------------------------------------------------
Rayfield:Notify({
Title = "๐ Welcome "..LP.Name,
Content = "Vic Hub loaded ๐ธ",
Duration = 6
})
----------------------------------------------------
-- VARIABLES
----------------------------------------------------
local LockOn = false
local MobileLock = false
local LockFOV = 250
local LockSmooth = 0.55
local ESP = false
local InfJump = false
local NoClip = false
local WalkSpeed = 16
local Highlights = {}
----------------------------------------------------
-- TARGET SYSTEM (FIXED)
----------------------------------------------------
local function GetClosestTarget()
local closest, shortest = nil, math.huge
local center = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2)
for _,plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character and plr.Character:FindFirstChild("Head") then
local head = plr.Character.Head
local pos, visible = Camera:WorldToViewportPoint(head.Position)
if visible then
local dist = (Vector2.new(pos.X,pos.Y) - center).Magnitude
if dist < LockFOV and dist < shortest then
closest = head
shortest = dist
end
end
end
end
return closest
end
----------------------------------------------------
-- MAIN LOOP (PC + MOBILE)
----------------------------------------------------
RunService.RenderStepped:Connect(function()
local aiming = UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) or MobileLock
if LockOn and aiming then
local target = GetClosestTarget()
if target then
Camera.CFrame = Camera.CFrame:Lerp(
CFrame.new(Camera.CFrame.Position, target.Position),
LockSmooth
)
end
end
if NoClip and LP.Character then
for _,p in pairs(LP.Character:GetDescendants()) do
if p:IsA("BasePart") then
p.CanCollide = false
end
end
end
if LP.Character and LP.Character:FindFirstChildOfClass("Humanoid") then
LP.Character:FindFirstChildOfClass("Humanoid").WalkSpeed = WalkSpeed
end
end)
----------------------------------------------------
-- ESP
----------------------------------------------------
local function UpdateESP()
for _,plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and plr.Character then
if ESP and not Highlights[plr] then
local h = Instance.new("Highlight")
h.FillColor = Color3.fromRGB(255,0,0)
h.OutlineColor = Color3.new(1,1,1)
h.Adornee = plr.Character
h.Parent = plr.Character
Highlights[plr] = h
elseif not ESP and Highlights[plr] then
Highlights[plr]:Destroy()
Highlights[plr] = nil
end
end
end
end
----------------------------------------------------
-- INFINITE JUMP
----------------------------------------------------
UIS.JumpRequest:Connect(function()
if InfJump and LP.Character then
LP.Character:FindFirstChildOfClass("Humanoid"):ChangeState(Enum.HumanoidStateType.Jumping)
end
end)
----------------------------------------------------
-- TABS (6)
----------------------------------------------------
local AimTab = Window:CreateTab("๐ฏ Aim")
local ESPTab = Window:CreateTab("๐ ESP")
local MoveTab = Window:CreateTab("๐ Movement")
local VisualTab= Window:CreateTab("๐ Visuals")
local UtilTab = Window:CreateTab("๐งช Utility")
local InfoTab = Window:CreateTab("โน๏ธ Info")
----------------------------------------------------
-- AIM TAB (6)
----------------------------------------------------
AimTab:CreateToggle({Name="Enable Lock-On",Callback=function(v) LockOn=v end})
AimTab:CreateToggle({Name="Mobile Lock Toggle",Callback=function(v) MobileLock=v end})
AimTab:CreateSlider({Name="Lock FOV",Range={100,400},CurrentValue=LockFOV,Callback=function(v) LockFOV=v end})
AimTab:CreateSlider({Name="Lock Smooth",Range={0.3,1},CurrentValue=LockSmooth,Callback=function(v) LockSmooth=v end})
AimTab:CreateButton({Name="Reset Camera",Callback=function()
Camera.CFrame = CFrame.new(Camera.CFrame.Position, Camera.CFrame.Position + Camera.CFrame.LookVector)
end})
AimTab:CreateLabel("Hold RMB or enable Mobile Lock")
----------------------------------------------------
-- ESP TAB (6)
----------------------------------------------------
ESPTab:CreateToggle({Name="Player ESP",Callback=function(v) ESP=v UpdateESP() end})
ESPTab:CreateButton({Name="Refresh ESP",Callback=UpdateESP})
ESPTab:CreateLabel("Highlight ESP")
ESPTab:CreateLabel("Enemy Only")
ESPTab:CreateLabel("Safe Visuals")
ESPTab:CreateLabel("More in v2")
----------------------------------------------------
-- MOVEMENT TAB (6)
----------------------------------------------------
MoveTab:CreateToggle({Name="Infinite Jump",Callback=function(v) InfJump=v end})
MoveTab:CreateToggle({Name="NoClip",Callback=function(v) NoClip=v end})
MoveTab:CreateSlider({Name="WalkSpeed",Range={16,120},CurrentValue=16,Callback=function(v) WalkSpeed=v end})
MoveTab:CreateLabel("Client-sided")
MoveTab:CreateLabel("Mobile Supported")
MoveTab:CreateLabel("Smooth")
----------------------------------------------------
-- VISUAL TAB (6)
----------------------------------------------------
VisualTab:CreateButton({Name="Remove Camera Shake",Callback=function()
Camera.CameraType = Enum.CameraType.Custom
end})
VisualTab:CreateLabel("FPS Boost")
VisualTab:CreateLabel("No Flash")
VisualTab:CreateLabel("No Blur")
VisualTab:CreateLabel("Clean View")
VisualTab:CreateLabel("More Soon")
----------------------------------------------------
-- UTILITY TAB (6)
----------------------------------------------------
UtilTab:CreateButton({Name="Rejoin",Callback=function()
game:GetService("TeleportService"):Teleport(game.PlaceId)
end})
UtilTab:CreateButton({Name="Copy Discord",Callback=function()
setclipboard(DISCORD)
end})
UtilTab:CreateLabel("Key via Discord")
UtilTab:CreateLabel("Auto Copy")
UtilTab:CreateLabel("Safe")
UtilTab:CreateLabel("v1")
----------------------------------------------------
-- INFO TAB (6)
----------------------------------------------------
InfoTab:CreateLabel("Vic Hub v1")
InfoTab:CreateLabel("Made by Vicsclipss")
InfoTab:CreateLabel("Key: Vic")
InfoTab:CreateLabel("Mobile + PC")
InfoTab:CreateLabel("FPS Hub")
InfoTab:CreateButton({
Name="Get Key (Discord)",
Callback=function()
setclipboard(DISCORD)
Rayfield:Notify({
Title="Discord",
Content="Invite copied",
Duration=4
})
end
})



w
@deplocksxz join our discord also for early scripts,