local Rayfield = nil
local success, lib = pcall(function()
return loadstring(game:HttpGet("https://sirius.menu/rayfield"))()
end)
if success and lib then
Rayfield = lib
else
warn("Failed to load Rayfield UI. Check connection or the library link.")
return
end
-- =====================================
-- Services & Globals
-- =====================================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
getgenv().UniversalSettings = getgenv().UniversalSettings or {
WalkSpeed = 16,
JumpPower = 50,
FlySpeed = 50,
ESPEnabled = false,
ChamsEnabled = false,
NametagsEnabled = true,
AntiAFK = true,
FlyEnabled = false,
}
local Settings = getgenv().UniversalSettings
local Highlights = {}
local NametagHolder = {}
-- =====================================
-- UI Window
-- =====================================
local Window = Rayfield:CreateWindow({
Name = "🌐 Clints Hub",
LoadingTitle = "Loading Clints Hub...",
LoadingSubtitle = "Rayfield UI",
ConfigurationSaving = {
Enabled = true,
FolderName = "UniversalHubConfig",
FileName = "RayfieldUniversal"
},
Discord = {
Enabled = false
},
KeySystem = false
})
-- Tabs
local mainTab = Window:CreateTab("Main", 4483345998)
local playerTab = Window:CreateTab("Player", 4483345998)
local visualsTab = Window:CreateTab("Visuals", 6023426915)
local utilitiesTab = Window:CreateTab("Utilities", 4670953385)
local settingsTab = Window:CreateTab("Settings", 6034818375)
-- =====================================
-- Main Tab
-- =====================================
mainTab:CreateButton({
Name = "Reset Character",
Callback = function()
LocalPlayer:LoadCharacter()
end
})
mainTab:CreateButton({
Name = "Center Camera on Character",
Callback = function()
if Character and Character:FindFirstChild("HumanoidRootPart") then
workspace.CurrentCamera.CFrame = Character.HumanoidRootPart.CFrame * CFrame.new(0, 5, -10)
end
end
})
mainTab:CreateButton({
Name = "Copy Player List",
Callback = function()
local names = {}
for _, p in pairs(Players:GetPlayers()) do
table.insert(names, p.Name)
end
pcall(function() setclipboard(table.concat(names, ", ")) end)
Rayfield:Notify({Title = "Copied", Content = "Player list copied to clipboard."})
end
})
-- =====================================
-- Player Tab
-- =====================================
playerTab:CreateSlider({
Name = "WalkSpeed",
Range = {8, 300},
Increment = 1,
Suffix = "studs/s",
CurrentValue = Settings.WalkSpeed,
Callback = function(Value)
Settings.WalkSpeed = Value
if Humanoid then Humanoid.WalkSpeed = Value end
end
})
playerTab:CreateSlider({
Name = "JumpPower",
Range = {10, 300},
Increment = 1,
Suffix = "power",
CurrentValue = Settings.JumpPower,
Callback = function(Value)
Settings.JumpPower = Value
if Humanoid then Humanoid.JumpPower = Value end
end
})
-- ✈️ Fly Toggle
playerTab:CreateToggle({
Name = "Enable Fly",
CurrentValue = Settings.FlyEnabled,
Callback = function(state)
Settings.FlyEnabled = state
local root = Character:FindFirstChild("HumanoidRootPart")
if not root then return end
if state then
local bv = Instance.new("BodyVelocity")
bv.Name = "FlyBV"
bv.MaxForce = Vector3.new(1e5, 1e5, 1e5)
bv.Parent = root
local bg = Instance.new("BodyGyro")
bg.Name = "FlyBG"
bg.MaxTorque = Vector3.new(4e5, 4e5, 4e5)
bg.CFrame = root.CFrame
bg.Parent = root
local flySpeed = Settings.FlySpeed
local moveDir = Vector3.new()
local keys = {W=false,S=false,A=false,D=false,Space=false,Shift=false}
local function update()
local cam = workspace.CurrentCamera
local dir = Vector3.new()
if keys.W then dir = dir + cam.CFrame.LookVector end
if keys.S then dir = dir - cam.CFrame.LookVector end
if keys.A then dir = dir - cam.CFrame.RightVector end
if keys.D then dir = dir + cam.CFrame.RightVector end
if keys.Space then dir = dir + Vector3.new(0,1,0) end
if keys.Shift then dir = dir - Vector3.new(0,1,0) end
if dir.Magnitude > 0 then
bv.Velocity = dir.Unit * flySpeed
bg.CFrame = CFrame.new(root.Position, root.Position + cam.CFrame.LookVector)
else
bv.Velocity = Vector3.new()
end
end
local inputBegan = UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.KeyCode == Enum.KeyCode.W then keys.W = true end
if input.KeyCode == Enum.KeyCode.S then keys.S = true end
if input.KeyCode == Enum.KeyCode.A then keys.A = true end
if input.KeyCode == Enum.KeyCode.D then keys.D = true end
if input.KeyCode == Enum.KeyCode.Space then keys.Space = true end
if input.KeyCode == Enum.KeyCode.LeftShift then keys.Shift = true end
end)
local inputEnded = UserInputService.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.W then keys.W = false end
if input.KeyCode == Enum.KeyCode.S then keys.S = false end
if input.KeyCode == Enum.KeyCode.A then keys.A = false end
if input.KeyCode == Enum.KeyCode.D then keys.D = false end
if input.KeyCode == Enum.KeyCode.Space then keys.Space = false end
if input.KeyCode == Enum.KeyCode.LeftShift then keys.Shift = false end
end)
local step = RunService.RenderStepped:Connect(update)
Settings._FlyCleanup = function()
inputBegan:Disconnect()
inputEnded:Disconnect()
step:Disconnect()
bv:Destroy()
bg:Destroy()
end
else
if Settings._FlyCleanup then
Settings._FlyCleanup()
Settings._FlyCleanup = nil
end
end
end
})
playerTab:CreateInput({
Name = "Teleport to Player",
PlaceholderText = "Player Name",
RemoveTextAfterFocusLost = true,
Callback = function(val)
local target = Players:FindFirstChild(val)
if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
Character:WaitForChild("HumanoidRootPart").CFrame = target.Character.HumanoidRootPart.CFrame + Vector3.new(0,3,0)
else
Rayfield:Notify({Title="Teleport Failed", Content="Player not found or no HRP."})
end
end
})
playerTab:CreateButton({
Name = "Teleport to Mouse",
Callback = function()
local mouse = LocalPlayer:GetMouse()
if mouse and mouse.Hit then
Character:WaitForChild("HumanoidRootPart").CFrame = mouse.Hit + Vector3.new(0,3,0)
end
end
})
-- =====================================
-- Visuals Tab
-- =====================================
local function createHighlight(char, color)
if not char or Highlights[char] then return end
local h = Instance.new("Highlight")
h.Name = "ESPHighlight"
h.Adornee = char
h.FillColor = color or Color3.fromHSV(tick()%10/10,1,1)
h.FillTransparency = 0.5
h.OutlineTransparency = 0.4
h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
h.Parent = game:GetService("CoreGui")
Highlights[char] = h
end
local function removeHighlight(char)
if Highlights[char] then
Highlights[char]:Destroy()
Highlights[char] = nil
end
end
visualsTab:CreateToggle({
Name = "ESP",
CurrentValue = Settings.ESPEnabled,
Callback = function(state)
Settings.ESPEnabled = state
if not state then
for c,_ in pairs(Highlights) do removeHighlight(c) end
else
for _,p in pairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character then createHighlight(p.Character) end
end
end
end
})
visualsTab:CreateToggle({
Name = "Chams",
CurrentValue = Settings.ChamsEnabled,
Callback = function(state)
Settings.ChamsEnabled = state
for _, p in pairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character then
for _, part in pairs(p.Character:GetDescendants()) do
if part:IsA("BasePart") then
if state then
if not part:FindFirstChild("Cham") then
local box = Instance.new("SelectionBox")
box.Name = "Cham"
box.Adornee = part
box.Parent = part
end
else
if part:FindFirstChild("Cham") then
part.Cham:Destroy()
end
end
end
end
end
end
end
})
visualsTab:CreateToggle({
Name = "Nametags",
CurrentValue = Settings.NametagsEnabled,
Callback = function(state)
Settings.NametagsEnabled = state
if not state then
for _, gui in pairs(NametagHolder) do
if gui then gui:Destroy() end
end
NametagHolder = {}
end
end
})
-- =====================================
-- Utilities Tab
-- =====================================
utilitiesTab:CreateToggle({
Name = "Anti-AFK",
CurrentValue = Settings.AntiAFK,
Callback = function(state)
Settings.AntiAFK = state
if state then
getgenv().AntiAFKConnection = game:GetService("UserInputService").Idled:Connect(function()
game:GetService("VirtualUser"):ClickButton2(Vector2.new())
end)
else
if getgenv().AntiAFKConnection then
getgenv().AntiAFKConnection:Disconnect()
getgenv().AntiAFKConnection = nil
end
end
end
})
utilitiesTab:CreateButton({
Name = "Get Nearest Player",
Callback = function()
local root = Character:FindFirstChild("HumanoidRootPart")
if not root then return end
local nearest, dist = nil, math.huge
for _, p in pairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
local d = (p.Character.HumanoidRootPart.Position - root.Position).Magnitude
if d < dist then
nearest = p
dist = d
end
end
end
if nearest then
Rayfield:Notify({Title="Nearest Player", Content=nearest.Name.." ("..math.floor(dist).." studs)"})
else
Rayfield:Notify({Title="Nearest Player", Content="No one nearby"})
end
end
})
-- =====================================
-- Settings Tab
-- =====================================
settingsTab:CreateKeybind({
Name = "Toggle UI",
CurrentKeybind = Enum.KeyCode.RightShift,
HoldToInteract = false,
Callback = function()
Rayfield:Toggle()
end
})
settingsTab:CreateInput({
Name = "Set Fly Speed",
PlaceholderText = tostring(Settings.FlySpeed),
RemoveTextAfterFocusLost = true,
Callback = function(val)
local n = tonumber(val)
if n then Settings.FlySpeed = n end
end
})
settingsTab:CreateButton({
Name = "Unload Script",
Callback = function()
for c,_ in pairs(Highlights) do removeHighlight(c) end
if getgenv().AntiAFKConnection then
getgenv().AntiAFKConnection:Disconnect()
getgenv().AntiAFKConnection = nil
end
Rayfield:Destroy()
end
})
-- =====================================
-- Nametags Runtime
-- =====================================
RunService.Heartbeat:Connect(function()
for _, p in pairs(Players:GetPlayers()) do
if p ~= LocalPlayer then
if Settings.NametagsEnabled and p.Character and p.Character:FindFirstChild("Head") then
if not NametagHolder[p] then
local gui = Instance.new("BillboardGui")
gui.Name = "Nametag"
gui.Size = UDim2.new(0,150,0,50)
gui.StudsOffset = Vector3.new(0,2.5,0)
gui.AlwaysOnTop = true
gui.MaxDistance = 1000
local label = Instance.new("TextLabel", gui)
label.Size = UDim2.new(1,0,1,0)
label.BackgroundTransparency = 1
label.Text = p.Name
label.TextColor3 = Color3.fromRGB(255,255,255)
label.Font = Enum.Font.SourceSansBold
label.TextScaled = true
label.TextStrokeTransparency = 0.6
gui.Parent = p.Character.Head
NametagHolder[p] = gui
end
else
if NametagHolder[p] then
NametagHolder[p]:Destroy()
NametagHolder[p] = nil
end
end
end
end
end)
-- =====================================
-- Keep WS/JP synced
-- =====================================
RunService.Heartbeat:Connect(function()
if Humanoid then
if Humanoid.WalkSpeed ~= Settings.WalkSpeed then
Humanoid.WalkSpeed = Settings.WalkSpeed
end
if Humanoid.JumpPower ~= Settings.JumpPower then
Humanoid.JumpPower = Settings.JumpPower
end
end
end)
Rayfield:Notify({Title="✅ Universal Hub", Content="Rayfield version loaded. RightShift to toggle UI."})