
KeylessUniversal

-- Valox Hub v1.8.7
-- ALL credits to Valox Creations
-- Discord Link
local DISCORD_LINK = "https://discord.gg/28TVJCe5Kc"
-- ======= Cleanup previous runs =======
if getgenv().Rayfield and type(getgenv().Rayfield.Destroy) == "function" then
pcall(function() getgenv().Rayfield:Destroy() end)
end
getgenv().Rayfield = nil
if getgenv().Connections then
for _, c in pairs(getgenv().Connections) do
pcall(function() c:Disconnect() end)
end
end
getgenv().Connections = {}
if getgenv().ActiveCircles then
for _, c in pairs(getgenv().ActiveCircles) do
pcall(function() if c and c.Remove then c:Remove() end end)
end
end
getgenv().ActiveCircles = {}
if getgenv().ESPBoxes then
for _, b in pairs(getgenv().ESPBoxes) do
pcall(function() if b and b.Destroy then b:Destroy() end end)
end
end
getgenv().ESPBoxes = {}
if getgenv().ESPNames then
for _, n in pairs(getgenv().ESPNames) do
pcall(function() if n and n.Destroy then n:Destroy() end end)
end
end
getgenv().ESPNames = {}
if getgenv().SkeletonLines then
for plr, conn in pairs(getgenv().SkeletonLines) do
pcall(function() if conn.Connection then conn.Connection:Disconnect() end end)
for _, line in pairs(conn and conn.Limbs or {}) do
pcall(function() if line and line.Remove then line:Remove() end end)
end
end
end
getgenv().SkeletonLines = {}
if getgenv().AntiFlingParts then
for _, part in pairs(getgenv().AntiFlingParts) do
pcall(function() if part and part.Destroy then part:Destroy() end end)
end
end
getgenv().AntiFlingParts = {}
if getgenv().HitboxAdornments then
for _, adorn in pairs(getgenv().HitboxAdornments) do
pcall(function() if adorn and adorn.Destroy then adorn:Destroy() end end)
end
end
getgenv().HitboxAdornments = {}
for _, plr in pairs(game:GetService("Players"):GetPlayers()) do
if plr ~= game:GetService("Players").LocalPlayer and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
pcall(function()
local root = plr.Character.HumanoidRootPart
root.Size = Vector3.new(2, 2, 1)
root.Transparency = 1
root.CanCollide = true
root.Material = Enum.Material.Plastic
root.BrickColor = BrickColor.new("Medium stone grey")
end)
end
end
-- ======= Defaults =======
getgenv().AimbotSettings = getgenv().AimbotSettings or {
Enabled = false,
SmartAimbot = true,
Mode = "Hold",
TeamCheck = false,
Prediction = "Off",
Smoothing = "Off",
TargetPart = "Torso",
LockTarget = false,
LockedTarget = nil
}
getgenv().CircleSettings = getgenv().CircleSettings or {
FOV = 120,
Color = Color3.fromRGB(255, 255, 255),
Rainbow = false,
Thickness = 2,
RainbowSpeed = 5,
Visible = true
}
getgenv().ESPSettings = getgenv().ESPSettings or {
Enabled = false,
SkeletonEnabled = false,
NamesEnabled = false,
Color = Color3.fromRGB(255, 0, 0),
SkeletonColor = Color3.fromRGB(0, 255, 0),
MaxDistance = 500
}
getgenv().PlayerSettings = getgenv().PlayerSettings or {
WalkspeedEnabled = false,
Walkspeed = 16,
JumpPowerEnabled = false,
JumpPower = 50,
InfiniteJump = false,
NoclipEnabled = false,
FlyEnabled = false,
FlySpeed = 50
}
getgenv().MiscSettings = getgenv().MiscSettings or {
AntiAFK = false,
AntiFling = false,
PlasticMaterialsEnabled = false,
DisableNotifications = false
}
getgenv().HomeSettings = getgenv().HomeSettings or {
HitboxEnabled = false,
HitboxSize = 50
}
-- ======= Services =======
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local VirtualUser = game:GetService("VirtualUser")
local CoreGui = game:GetService("CoreGui")
-- Runtime tables
getgenv().ActiveCircles = getgenv().ActiveCircles or {}
getgenv().ESPBoxes = getgenv().ESPBoxes or {}
getgenv().ESPNames = getgenv().ESPNames or {}
getgenv().SkeletonLines = getgenv().SkeletonLines or {}
getgenv().AntiFlingParts = getgenv().AntiFlingParts or {}
getgenv().Connections = getgenv().Connections or {}
getgenv().HitboxAdornments = getgenv().HitboxAdornments or {}
local objectCache = {} -- Store original properties
-- ======= Helpers =======
local function DestroyAllCircles()
for _, c in pairs(getgenv().ActiveCircles) do
pcall(function() if c and c.Remove then c:Remove() end end)
end
getgenv().ActiveCircles = {}
end
local function ClearESPBoxes()
for plr, box in pairs(getgenv().ESPBoxes) do
pcall(function() if box and box.Destroy then box:Destroy() end end)
getgenv().ESPBoxes[plr] = nil
end
end
local function ClearESPNames()
for plr, name in pairs(getgenv().ESPNames) do
pcall(function() if name and name.Destroy then name:Destroy() end end)
getgenv().ESPNames[plr] = nil
end
end
local function ClearSkeletonLines()
for plr, conn in pairs(getgenv().SkeletonLines) do
pcall(function()
if conn.Connection then conn.Connection:Disconnect() end
for _, line in pairs(conn.Limbs or {}) do
pcall(function() if line and line.Remove then line:Remove() end end)
end
end)
getgenv().SkeletonLines[plr] = nil
end
end
local function ClearHitboxAdornments()
for _, adorn in pairs(getgenv().HitboxAdornments) do
pcall(function() if adorn and adorn.Destroy then adorn:Destroy() end end)
end
getgenv().HitboxAdornments = {}
end
local function UnloadAll()
DestroyAllCircles()
ClearESPBoxes()
ClearESPNames()
ClearSkeletonLines()
ClearHitboxAdornments()
for _, conn in pairs(getgenv().Connections) do
pcall(function() conn:Disconnect() end)
end
getgenv().Connections = {}
for _, part in pairs(getgenv().AntiFlingParts) do
pcall(function() if part and part.Destroy then part:Destroy() end end)
end
getgenv().AntiFlingParts = {}
for _, plr in pairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
pcall(function()
local root = plr.Character.HumanoidRootPart
root.Size = Vector3.new(2, 2, 1)
root.Transparency = 1
root.CanCollide = true
root.Material = Enum.Material.Plastic
root.BrickColor = BrickColor.new("Medium stone grey")
end)
end
end
for obj, props in pairs(objectCache or {}) do
pcall(function()
if obj and obj.Parent and props.Material then
obj.Material = props.Material
end
end)
end
objectCache = {}
if getgenv().Rayfield and type(getgenv().Rayfield.Destroy) == "function" then
pcall(function() getgenv().Rayfield:Destroy() end)
end
getgenv().Rayfield = nil
getgenv().ScriptLoaded = false
end
local function getAimPartFromName(character, name)
if not character then return nil end
if name == "Head" then
return character:FindFirstChild("Head")
else
return character:FindFirstChild("HumanoidRootPart")
or character:FindFirstChild("UpperTorso")
or character:FindFirstChild("Torso")
or character:FindFirstChild("LowerTorso")
end
end
-- ======= Plastic Materials =======
local function updateWorldObjects()
if not getgenv().MiscSettings then
warn("MiscSettings is nil in updateWorldObjects")
return
end
local success, err = pcall(function()
if getgenv().MiscSettings.PlasticMaterialsEnabled then
local allObjects = game:GetService("Workspace"):GetDescendants()
for _, object in ipairs(allObjects) do
if object:IsA("BasePart") then
local success, objErr = pcall(function()
if not objectCache[object] then
objectCache[object] = { Material = object.Material }
end
object.Material = Enum.Material.Plastic
end)
if not success then
warn("Error updating object material: " .. tostring(objErr))
end
end
end
else
for obj, props in pairs(objectCache) do
local success, objErr = pcall(function()
if obj and obj.Parent and props.Material then
obj.Material = props.Material
end
end)
if not success then
warn("Error reverting object material: " .. tostring(objErr))
end
end
end
end)
if not success then
warn("updateWorldObjects Error: " .. tostring(err))
pcall(function()
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to update materials: " .. tostring(err),
Duration = 5
})
end)
end
end
-- ======= Load Rayfield =======
local ok, Rayfield = pcall(function()
return loadstring(game:HttpGet("https://sirius.menu/rayfield"))()
end)
if not ok or not Rayfield then
pcall(function()
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = "Valox Hub Error",
Text = "Failed to load Rayfield UI. Check your executor or network.",
Duration = 5
})
end)
return
end
getgenv().Rayfield = Rayfield
-- ======= Mobile check =======
local isMobile = UserInputService.TouchEnabled or (UserInputService.KeyboardEnabled == false)
-- ======= UI Creation =======
local Window
local success, err = pcall(function()
Window = Rayfield:CreateWindow({
Name = "Valox Hub",
LoadingTitle = "Valox Hub Loading",
LoadingSubtitle = "by Valox Creations",
ConfigurationSaving = { Enabled = true, FolderName = "ValoxHub", FileName = "Settings" },
KeySystem = false
})
end)
if not success then
pcall(function()
game:GetService("StarterGui"):SetCore("SendNotification", {
Title = "Valox Hub Error",
Text = "Failed to create UI window: " .. tostring(err),
Duration = 5
})
end)
return
end
-- ======= Tab Creation =======
local success, err = pcall(function()
local HomeTab = Window:CreateTab("Home", "home")
local AimbotTab, CircleTab, ESPTab, MiscTab, PlayerTab
if not isMobile then
AimbotTab = Window:CreateTab("Aimbot", "target")
CircleTab = Window:CreateTab("Circle", "circle")
end
ESPTab = Window:CreateTab("ESP", "eye")
MiscTab = Window:CreateTab("Misc", "settings")
PlayerTab = Window:CreateTab("Player", "user")
-- ======= Home Tab: Discord Link, Hub Launcher & Changelog =======
HomeTab:CreateSection("Community")
HomeTab:CreateButton({
Name = "Copy Discord Link",
Callback = function()
local success, err = pcall(function()
setclipboard(DISCORD_LINK)
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub",
Content = "Discord link copied to clipboard!",
Duration = 3
})
end
end)
if not success then
warn("Failed to copy Discord link: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to copy Discord link: " .. tostring(err),
Duration = 5
})
end
end
end
})
HomeTab:CreateSection("Hub Launcher")
local hubs = {
["H4x Scripts"] = "https://raw.githubusercontent.com/H4xScripts/Loader/refs/heads/main/loader.lua",
["VoidWare"] = "https://raw.githubusercontent.com/VapeVoidware/VWExtra/main/NightsInTheForest.lua",
["Infinite Yield"] = "https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source",
["Vertex"] = "https://raw.githubusercontent.com/vertex-peak/vertex/refs/heads/main/loadstring"
}
for name, url in pairs(hubs) do
HomeTab:CreateButton({
Name = "Load " .. name,
Callback = function()
if not url or url == "" then
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub",
Content = "No URL set for " .. name,
Duration = 3
})
end
return
end
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub",
Content = "Loading " .. name,
Duration = 2
})
end
local ok, err = pcall(function()
local scriptText = game:HttpGet(url, true)
local fn = loadstring(scriptText)
if type(fn) == "function" then fn() end
end)
if not ok then
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub",
Content = "Failed to load " .. name .. ": " .. tostring(err),
Duration = 3
})
end
else
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub",
Content = name .. " loaded",
Duration = 2
})
end
end
end
})
end
HomeTab:CreateSection("Changelog & Updates")
HomeTab:CreateParagraph({
Title = "Changelog",
Content = [[
### Version 1.8.7
- Removed smart prediction entirely.
- Added toggle in Misc tab to disable all notifications.
### Version 1.8.6
- Made Smart Prediction gradient-based: scales linearly from 0 (ping < 30) to 0.2 (ping > 80), with exact dynamic mult per frame (e.g., at 50ms ~0.08, 51ms ~0.082).
### Version 1.8.5
- Added Smart Prediction toggle that calculates lead based on ping and target velocity; disables standard Prediction dropdown when enabled.
- Fixed Smart Prediction to use LocalPlayer:GetNetworkPing() and adjusted leadTime for accurate calculation (medium at ~55ms).
### Version 1.8.4
- Changed max Rainbow Circle Speed to 3 for slower effect.
### Version 1.8.3
- Removed all notifications related to ESP creation/initialization for players and aimbot lock events.
### Version 1.8.2
- Applied easy fixes: Added R15/R6 compatibility for Skeleton ESP, Rainbow Speed slider in Circle tab, Plastic materials cache cleanup on player join/leave, objectCache initialization fix for proper UnloadAll handling.
### Version 1.8.1
- Fixed callback error in Skeleton ESP toggle by improving error handling
- Suppressed non-critical error notifications for Skeleton ESP
- Added console logging for Skeleton ESP errors instead of UI notifications
- Enhanced character and part validation in Skeleton ESP to prevent errors
### Version 1.8.0
- Fixed Skeleton ESP visibility toggle to update immediately without requiring reset
- Ensured Skeleton ESP only activates for players when enabled
- Improved Skeleton ESP render loop to enforce visibility
- Added debug notifications for Skeleton ESP toggle and render issues
### Version 1.7.9
- Added "Movement Settings" divider in Player tab
- Improved Reset buttons for Walkspeed and Jump Power to update values properly
- Converted Hitbox Expander to toggle with size slider and proper apply/reset functionality
- Fixed Skeleton ESP line visibility and color application
- Fixed Skeleton ESP not displaying lines
- Added "Extra Settings" divider in Player tab for Fly, Noclip, Infinite Jump
- Moved Unload Script button to top of Misc tab with divider
- Added Copy Discord Link button in Home tab
- Verified Skeleton ESP color picker functionality
- Improved error handling for Skeleton ESP
### Version 1.7.8
- Restored tab dividers and organized UI elements
- Fixed Skeleton ESP Color Picker not responding
- Fixed Skeleton ESP not displaying lines
- Added Reset Walkspeed and Reset Jump Power buttons to Player tab
- Verified Aimbot Lock Target functionality
- Improved error handling for ESP and color picker
### Version 1.7.7
- Fixed Player tab not appearing
- Fixed Misc tab controls not showing
- Fixed ESP tab (Box, Skeleton, Names) not functioning
- Improved Aimbot Lock Target to enforce FOV
- Added debug notifications for tab failures
### Version 1.7.6
- Fixed Aimbot Lock Target to maintain lock within FOV
- Added notification for lock clearing
- Consolidated script into single block
- Verified Misc, Player, ESP functionality
### Version 1.7.5
- Added Aimbot Lock Target toggle
- Added ESP Names toggle
- Added separate Skeleton ESP color picker
- Moved Misc tab to full controls
- Fixed Player tab and ESP functionality
### Version 1.7.4
- Added Hub Launcher buttons
- Fixed Hitbox Expander visibility
### Version 1.7.3
- Added debug prints for line creation
### Version 1.7.2
- Fixed grey box in players' characters
- Fixed Box ESP not appearing
- Verified Anti-Fling cleanup
### Version 1.7.1
- Reordered changelog
- Fixed Box ESP dynamic sizing
- Verified Anti-Fling cleanup
### Version 1.7.0
- Made changelog scrollable
- Fixed Anti-Fling cleanup
### Version 1.6.9
- Added Hitbox Expander cleanup
### Version 1.6.8
- Fixed Fly and Anti-Fling bugs
### Version 1.6.7
- Updated Fly: speed 50-1000, persists on death
- Added Anti-Fling toggle with /antion, /antioff
- Moved Bring All and Hitbox Expander to Misc tab
### Version 1.5.5
- Initial version with Home, Aimbot, Circle, ESP, Player, Misc tabs
]]
})
-- ======= Aimbot Tab (Non-Mobile) =======
local aimConn = nil
if not isMobile then
local success, err = pcall(function()
AimbotTab:CreateSection("Aimbot Settings")
AimbotTab:CreateToggle({
Name = "Enable Aimbot",
CurrentValue = getgenv().AimbotSettings.Enabled,
Callback = function(v)
getgenv().AimbotSettings.Enabled = v
if not v then
getgenv().AimbotSettings.LockedTarget = nil
end
end
})
AimbotTab:CreateToggle({
Name = "Smart Aimbot",
CurrentValue = getgenv().AimbotSettings.SmartAimbot,
Callback = function(v) getgenv().AimbotSettings.SmartAimbot = v end
})
AimbotTab:CreateToggle({
Name = "Lock Target",
CurrentValue = getgenv().AimbotSettings.LockTarget,
Callback = function(v)
getgenv().AimbotSettings.LockTarget = v
if not v then
getgenv().AimbotSettings.LockedTarget = nil
end
end
})
AimbotTab:CreateToggle({
Name = "Team Check",
CurrentValue = getgenv().AimbotSettings.TeamCheck,
Callback = function(v) getgenv().AimbotSettings.TeamCheck = v end
})
AimbotTab:CreateDropdown({
Name = "Prediction",
Options = {"Off", "Low", "Medium", "High"},
CurrentOption = {getgenv().AimbotSettings.Prediction},
Callback = function(opt) getgenv().AimbotSettings.Prediction = opt[1] end
})
AimbotTab:CreateDropdown({
Name = "Smoothing",
Options = {"Off", "Low", "Medium", "High"},
CurrentOption = {getgenv().AimbotSettings.Smoothing},
Callback = function(opt) getgenv().AimbotSettings.Smoothing = opt[1] end
})
AimbotTab:CreateDropdown({
Name = "Toggle Mode",
Options = {"Hold", "Toggle"},
CurrentOption = {getgenv().AimbotSettings.Mode},
Callback = function(opt) getgenv().AimbotSettings.Mode = opt[1] end
})
AimbotTab:CreateDropdown({
Name = "Target Part",
Options = {"Head", "Torso"},
CurrentOption = {getgenv().AimbotSettings.TargetPart},
Callback = function(opt) getgenv().AimbotSettings.TargetPart = opt[1] end
})
end)
if not success then
warn("AimbotTab creation failed: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to create Aimbot tab: " .. tostring(err),
Duration = 5
})
end
end
local aimActive = false
UserInputService.InputBegan:Connect(function(input, processed)
if processed then return end
if getgenv().AimbotSettings.Mode == "Hold" and input.UserInputType == Enum.UserInputType.MouseButton2 then
aimActive = true
elseif getgenv().AimbotSettings.Mode == "Toggle" and input.UserInputType == Enum.UserInputType.MouseButton2 then
aimActive = not aimActive
end
end)
UserInputService.InputEnded:Connect(function(input)
if getgenv().AimbotSettings.Mode == "Hold" and input.UserInputType == Enum.UserInputType.MouseButton2 then
aimActive = false
end
end)
local function smoothingFactorFromSetting()
local s = getgenv().AimbotSettings.Smoothing
return (s == "Off" and 1) or (s == "Low" and 0.15) or (s == "Medium" and 0.08) or (s == "High" and 0.03) or 0.1
end
local function getClosest()
local mousePos = UserInputService:GetMouseLocation()
if getgenv().AimbotSettings.LockTarget and getgenv().AimbotSettings.LockedTarget then
local target = getgenv().AimbotSettings.LockedTarget
local char = target.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local root = char and char:FindFirstChild("HumanoidRootPart")
if hum and root and hum.Health > 0 then
if getgenv().AimbotSettings.TeamCheck and target.Team == LocalPlayer.Team then
getgenv().AimbotSettings.LockedTarget = nil
else
local screenPos, onScreen = Camera:WorldToViewportPoint(root.Position)
if onScreen and (Vector2.new(screenPos.X, screenPos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude <= getgenv().CircleSettings.FOV then
return target
else
getgenv().AimbotSettings.LockedTarget = nil
end
end
else
getgenv().AimbotSettings.LockedTarget = nil
end
end
local closest, shortestDist = nil, math.huge
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
local char = plr.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local root = char and char:FindFirstChild("HumanoidRootPart")
if hum and root and hum.Health > 0 then
if getgenv().AimbotSettings.TeamCheck and plr.Team == LocalPlayer.Team then continue end
local screenPos, onScreen = Camera:WorldToViewportPoint(root.Position)
if not onScreen then continue end
local dist = (Vector2.new(screenPos.X, screenPos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude
if dist < shortestDist and dist <= getgenv().CircleSettings.FOV then
closest = plr
shortestDist = dist
end
end
end
if closest and getgenv().AimbotSettings.LockTarget and not getgenv().AimbotSettings.LockedTarget then
local char = closest.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
local screenPos, onScreen = Camera:WorldToViewportPoint(root.Position)
if onScreen and (Vector2.new(screenPos.X, screenPos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude <= getgenv().CircleSettings.FOV then
getgenv().AimbotSettings.LockedTarget = closest
end
end
end
return closest
end
aimConn = RunService.RenderStepped:Connect(function()
if not getgenv().AimbotSettings.Enabled then return end
if getgenv().AimbotSettings.Mode == "Hold" and not aimActive then return end
if getgenv().AimbotSettings.Mode == "Toggle" and not aimActive then return end
local target = getClosest()
if not target or not target.Character then return end
local hum = target.Character:FindFirstChildOfClass("Humanoid")
if not hum or hum.Health <= 0 then return end
local finalPart = getAimPartFromName(target.Character, getgenv().AimbotSettings.TargetPart)
if not finalPart then return end
if getgenv().AimbotSettings.SmartAimbot then
local origin = Camera.CFrame.Position
local direction = (finalPart.Position - origin)
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Blacklist
rayParams.FilterDescendantsInstances = {LocalPlayer.Character}
local result = workspace:Raycast(origin, direction, rayParams)
if result and result.Instance and result.Instance:IsA("BasePart") and not result.Instance:IsDescendantOf(target.Character) then
local headPart = target.Character:FindFirstChild("Head")
if headPart and finalPart ~= headPart then
finalPart = headPart
end
end
end
local targetPos = finalPart.Position
local hrp = target.Character:FindFirstChild("HumanoidRootPart")
if hrp and getgenv().AimbotSettings.Prediction ~= "Off" then
local mult = (getgenv().AimbotSettings.Prediction == "Low" and 0.06)
or (getgenv().AimbotSettings.Prediction == "Medium" and 0.11)
or (getgenv().AimbotSettings.Prediction == "High" and 0.2)
or 0
targetPos = targetPos + hrp.Velocity * mult
end
local camCF = Camera.CFrame
local wanted = CFrame.new(camCF.Position, targetPos)
Camera.CFrame = camCF:Lerp(wanted, smoothingFactorFromSetting())
end)
table.insert(getgenv().Connections, aimConn)
end
-- ======= Circle Tab (Non-Mobile) =======
local mainCircle = nil
local circleConn = nil
if not isMobile then
local success, err = pcall(function()
CircleTab:CreateSection("Circle Settings")
CircleTab:CreateSlider({
Name = "FOV",
Range = {50, 500},
Increment = 10,
CurrentValue = getgenv().CircleSettings.FOV,
Callback = function(v) getgenv().CircleSettings.FOV = v end
})
CircleTab:CreateColorPicker({
Name = "Circle Color",
Color = getgenv().CircleSettings.Color,
Callback = function(v)
local success, err = pcall(function()
getgenv().CircleSettings.Color = v
end)
if not success then
warn("Circle Color Picker failed: " .. tostring(err))
end
end
})
CircleTab:CreateToggle({
Name = "Rainbow Circle",
CurrentValue = getgenv().CircleSettings.Rainbow,
Callback = function(v) getgenv().CircleSettings.Rainbow = v end
})
CircleTab:CreateSlider({
Name = "Thickness",
Range = {1, 10},
Increment = 1,
CurrentValue = getgenv().CircleSettings.Thickness,
Callback = function(v) getgenv().CircleSettings.Thickness = v end
})
CircleTab:CreateSlider({
Name = "Rainbow Speed",
Range = {1, 3},
Increment = 1,
CurrentValue = getgenv().CircleSettings.RainbowSpeed,
Callback = function(v) getgenv().CircleSettings.RainbowSpeed = v end
})
CircleTab:CreateToggle({
Name = "Show Circle",
CurrentValue = getgenv().CircleSettings.Visible,
Callback = function(v)
getgenv().CircleSettings.Visible = v
if mainCircle then pcall(function() mainCircle.Visible = v end) end
end
})
end)
if not success then
warn("CircleTab creation failed: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to create Circle tab: " .. tostring(err),
Duration = 5
})
end
end
local function CreateMainCircle()
DestroyAllCircles()
local m = UserInputService:GetMouseLocation()
local c = Drawing.new("Circle")
c.NumSides = 100
c.Filled = false
c.Visible = getgenv().CircleSettings.Visible
c.Thickness = getgenv().CircleSettings.Thickness
c.Radius = getgenv().CircleSettings.FOV
c.Position = Vector2.new(m.X, m.Y)
c.Color = getgenv().CircleSettings.Color
table.insert(getgenv().ActiveCircles, c)
return c
end
mainCircle = CreateMainCircle()
circleConn = RunService.RenderStepped:Connect(function()
if not mainCircle then return end
local m = UserInputService:GetMouseLocation()
pcall(function()
mainCircle.Position = Vector2.new(m.X, m.Y)
mainCircle.Radius = getgenv().CircleSettings.FOV
mainCircle.Thickness = getgenv().CircleSettings.Thickness
mainCircle.Visible = getgenv().CircleSettings.Visible
if getgenv().CircleSettings.Rainbow then
local time = tick() * getgenv().CircleSettings.RainbowSpeed
mainCircle.Color = Color3.fromHSV(time % 1, 1, 1)
else
mainCircle.Color = getgenv().CircleSettings.Color
end
end)
end)
table.insert(getgenv().Connections, circleConn)
end
-- ======= ESP Tab =======
local success, err = pcall(function()
ESPTab:CreateSection("ESP Settings")
ESPTab:CreateToggle({
Name = "Box ESP",
CurrentValue = getgenv().ESPSettings.Enabled,
Callback = function(v)
getgenv().ESPSettings.Enabled = v
if not v then ClearESPBoxes() end
end
})
ESPTab:CreateToggle({
Name = "Skeleton ESP",
CurrentValue = getgenv().ESPSettings.SkeletonEnabled,
Callback = function(v)
local success, err = pcall(function()
getgenv().ESPSettings.SkeletonEnabled = v
if v then
ClearSkeletonLines() -- Clear all existing lines to force reinitialization
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
if plr.Character then
createSkeletonESP(plr)
end
end
else
ClearSkeletonLines()
end
end)
if not success then
warn("Skeleton ESP toggle error: " .. tostring(err)) -- Log to console only
end
end
})
ESPTab:CreateToggle({
Name = "Names ESP",
CurrentValue = getgenv().ESPSettings.NamesEnabled,
Callback = function(v)
getgenv().ESPSettings.NamesEnabled = v
if not v then ClearESPNames() end
end
})
ESPTab:CreateColorPicker({
Name = "Box/Names ESP Color",
Color = getgenv().ESPSettings.Color,
Callback = function(v)
local success, err = pcall(function()
getgenv().ESPSettings.Color = v
end)
if not success then
warn("Box/Names ESP Color Picker failed: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to set Box/Names ESP color: " .. tostring(err),
Duration = 5
})
end
end
end
})
ESPTab:CreateColorPicker({
Name = "Skeleton ESP Color",
Color = getgenv().ESPSettings.SkeletonColor,
Callback = function(v)
local success, err = pcall(function()
getgenv().ESPSettings.SkeletonColor = v
for plr, data in pairs(getgenv().SkeletonLines) do
for _, line in ipairs(data.Limbs or {}) do
pcall(function() line.Color = v end)
end
end
end)
if not success then
warn("Skeleton ESP Color Picker failed: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to set Skeleton ESP color: " .. tostring(err),
Duration = 5
})
end
end
end
})
ESPTab:CreateSlider({
Name = "Max Distance",
Range = {100, 1000},
Increment = 10,
CurrentValue = getgenv().ESPSettings.MaxDistance,
Callback = function(v) getgenv().ESPSettings.MaxDistance = v end
})
end)
if not success then
warn("ESPTab creation failed: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to create ESP tab: " .. tostring(err),
Duration = 5
})
end
end
local function createNameESP(plr)
if plr == LocalPlayer or not getgenv().ESPSettings.NamesEnabled then return end
local char = plr.Character
if not char or not char:FindFirstChild("Head") then return end
local head = char.Head
local billboard = Instance.new("BillboardGui")
billboard.Name = "NameESP"
billboard.Size = UDim2.new(0, 100, 0, 30)
billboard.StudsOffset = Vector3.new(0, 3, 0)
billboard.Adornee = head
billboard.AlwaysOnTop = true
billboard.Parent = CoreGui
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundTransparency = 1
textLabel.Text = plr.Name
textLabel.TextColor3 = getgenv().ESPSettings.Color
textLabel.TextScaled = true
textLabel.Font = Enum.Font.SourceSans
textLabel.Parent = billboard
getgenv().ESPNames[plr] = billboard
end
local function createSkeletonESP(plr)
if plr == LocalPlayer or not getgenv().ESPSettings.SkeletonEnabled then return end
local char = plr.Character
if not char or not char.Parent or not char:FindFirstChild("HumanoidRootPart") or not char:FindFirstChildOfClass("Humanoid") then return end
local success, err = pcall(function()
local root = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if not root or not hum or hum.Health <= 0 then return end
local isR15 = hum.RigType == Enum.HumanoidRigType.R15
local limbs = isR15 and {
{ "Head", "UpperTorso" },
{ "UpperTorso", "LowerTorso" },
{ "LowerTorso", "LeftUpperLeg" },
{ "LowerTorso", "RightUpperLeg" },
{ "LeftUpperLeg", "LeftLowerLeg" },
{ "RightUpperLeg", "RightLowerLeg" },
{ "LeftLowerLeg", "LeftFoot" },
{ "RightLowerLeg", "RightFoot" },
{ "UpperTorso", "LeftUpperArm" },
{ "UpperTorso", "RightUpperArm" },
{ "LeftUpperArm", "LeftLowerArm" },
{ "RightUpperArm", "RightLowerArm" },
{ "LeftLowerArm", "LeftHand" },
{ "RightLowerArm", "RightHand" }
} or { -- R6 fallback
{ "Head", "Torso" },
{ "Torso", "Left Arm" },
{ "Torso", "Right Arm" },
{ "Torso", "Left Leg" },
{ "Torso", "Right Leg" }
}
local lines = {}
for _, limb in ipairs(limbs) do
local part1 = char:FindFirstChild(limb[1])
local part2 = char:FindFirstChild(limb[2])
if part1 and part2 then
local line = Drawing.new("Line")
line.Visible = getgenv().ESPSettings.SkeletonEnabled
line.Color = getgenv().ESPSettings.SkeletonColor
line.Thickness = 2
line.Transparency = 1
table.insert(lines, line)
end
end
local conn = RunService.RenderStepped:Connect(function()
local char = plr.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChildOfClass("Humanoid")
local distance = (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") and root and (root.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude) or math.huge
if not char or not char.Parent or not root or not hum or hum.Health <= 0 or not getgenv().ESPSettings.SkeletonEnabled or distance > getgenv().ESPSettings.MaxDistance then
pcall(function()
for _, line in pairs(lines) do
line.Visible = false
line:Remove()
end
conn:Disconnect()
getgenv().SkeletonLines[plr] = nil
end)
return
end
local i = 1
for _, limb in ipairs(limbs) do
local part1 = char:FindFirstChild(limb[1])
local part2 = char:FindFirstChild(limb[2])
if part1 and part2 and lines[i] then
local success, err = pcall(function()
local pos1, visible1 = Camera:WorldToViewportPoint(part1.Position)
local pos2, visible2 = Camera:WorldToViewportPoint(part2.Position)
lines[i].Visible = getgenv().ESPSettings.SkeletonEnabled and visible1 and visible2 and distance <= getgenv().ESPSettings.MaxDistance
lines[i].From = Vector2.new(pos1.X, pos1.Y)
lines[i].To = Vector2.new(pos2.X, pos2.Y)
lines[i].Color = getgenv().ESPSettings.SkeletonColor
lines[i].Thickness = 2
lines[i].Transparency = 1
end)
if not success then
warn("Skeleton ESP render failed for " .. plr.Name .. ": " .. tostring(err)) -- Log to console only
end
i = i + 1
elseif lines[i] then
lines[i].Visible = false
end
end
end)
getgenv().SkeletonLines[plr] = { Limbs = lines, Connection = conn }
end)
if not success then
warn("Skeleton ESP creation failed for " .. plr.Name .. ": " .. tostring(err)) -- Log to console only
end
end
local function updateESP()
if not (getgenv().ESPSettings.Enabled or getgenv().ESPSettings.SkeletonEnabled or getgenv().ESPSettings.NamesEnabled) then return end
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
local char = plr.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
local root = char and char:FindFirstChild("HumanoidRootPart")
local head = char and char:FindFirstChild("Head")
local distance = (LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") and root and (root.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude) or math.huge
if not char or not hum or not root or hum.Health <= 0 or distance > getgenv().ESPSettings.MaxDistance then
if getgenv().ESPBoxes[plr] then
pcall(function() getgenv().ESPBoxes[plr]:Destroy() end)
getgenv().ESPBoxes[plr] = nil
end
if getgenv().ESPNames[plr] then
pcall(function() getgenv().ESPNames[plr]:Destroy() end)
getgenv().ESPNames[plr] = nil
end
if getgenv().SkeletonLines[plr] then
pcall(function()
if getgenv().SkeletonLines[plr].Connection then
getgenv().SkeletonLines[plr].Connection:Disconnect()
end
for _, line in pairs(getgenv().SkeletonLines[plr].Limbs or {}) do
pcall(function() line:Remove() end)
end
end)
getgenv().SkeletonLines[plr] = nil
end
continue
end
if getgenv().ESPSettings.Enabled and not getgenv().ESPBoxes[plr] then
local success, err = pcall(function()
local box = Instance.new("BoxHandleAdornment")
box.Size = root.Size + Vector3.new(2, 4, 2)
box.Adornee = root
box.Color3 = getgenv().ESPSettings.Color
box.Transparency = 0.5
box.AlwaysOnTop = true
box.ZIndex = 5
box.Parent = CoreGui
getgenv().ESPBoxes[plr] = box
end)
if not success then
warn("Box ESP creation failed for " .. plr.Name .. ": " .. tostring(err))
end
end
if getgenv().ESPSettings.NamesEnabled and not getgenv().ESPNames[plr] and head then
local success, err = pcall(function()
createNameESP(plr)
end)
if not success then
warn("Names ESP creation failed for " .. plr.Name .. ": " .. tostring(err))
end
end
if getgenv().ESPSettings.SkeletonEnabled and not getgenv().SkeletonLines[plr] then
createSkeletonESP(plr)
end
if getgenv().ESPBoxes[plr] then
pcall(function()
getgenv().ESPBoxes[plr].Color3 = getgenv().ESPSettings.Color
getgenv().ESPBoxes[plr].Size = root.Size + Vector3.new(2, 4, 2)
end)
end
if getgenv().ESPNames[plr] then
pcall(function()
getgenv().ESPNames[plr].TextLabel.TextColor3 = getgenv().ESPSettings.Color
getgenv().ESPNames[plr].Enabled = distance <= getgenv().ESPSettings.MaxDistance
end)
end
end
end
local espConn = RunService.RenderStepped:Connect(updateESP)
table.insert(getgenv().Connections, espConn)
-- ======= Misc Tab =======
local success, err = pcall(function()
MiscTab:CreateButton({
Name = "Unload Script",
Callback = UnloadAll
})
MiscTab:CreateSection("Miscellaneous Settings")
MiscTab:CreateToggle({
Name = "Anti-AFK",
CurrentValue = getgenv().MiscSettings.AntiAFK,
Callback = function(v)
getgenv().MiscSettings.AntiAFK = v
if v then
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.new())
end
end
})
MiscTab:CreateToggle({
Name = "Anti-Fling",
CurrentValue = getgenv().MiscSettings.AntiFling,
Callback = function(v)
getgenv().MiscSettings.AntiFling = v
if v then
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
local char = plr.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local root = char.HumanoidRootPart
local part = Instance.new("Part")
part.Size = Vector3.new(2, 2, 1)
part.Position = root.Position
part.Anchored = true
part.Transparency = 1
part.CanCollide = true
part.Parent = workspace
getgenv().AntiFlingParts[plr] = part
end
end
else
for plr, part in pairs(getgenv().AntiFlingParts) do
pcall(function() part:Destroy() end)
getgenv().AntiFlingParts[plr] = nil
end
end
end
})
MiscTab:CreateToggle({
Name = "Plastic Materials",
CurrentValue = getgenv().MiscSettings.PlasticMaterialsEnabled,
Callback = function(v)
getgenv().MiscSettings.PlasticMaterialsEnabled = v
updateWorldObjects()
end
})
MiscTab:CreateToggle({
Name = "Disable Notifications",
CurrentValue = getgenv().MiscSettings.DisableNotifications,
Callback = function(v)
getgenv().MiscSettings.DisableNotifications = v
end
})
MiscTab:CreateToggle({
Name = "Enable Hitbox Expander",
CurrentValue = getgenv().HomeSettings.HitboxEnabled,
Callback = function(v)
getgenv().HomeSettings.HitboxEnabled = v
if v then
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
local char = plr.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local root = char.HumanoidRootPart
local size = getgenv().HomeSettings.HitboxSize
root.Size = Vector3.new(size, size, size)
root.Transparency = 0.7
root.Material = Enum.Material.Neon
root.BrickColor = BrickColor.new("Really red")
local adorn = Instance.new("BoxHandleAdornment")
adorn.Size = root.Size
adorn.Adornee = root
adorn.Color3 = Color3.fromRGB(255, 0, 0)
adorn.Transparency = 0.7
adorn.AlwaysOnTop = false
adorn.ZIndex = 0
adorn.Parent = CoreGui
getgenv().HitboxAdornments[plr] = adorn
end
end
else
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
local char = plr.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local root = char.HumanoidRootPart
root.Size = Vector3.new(2, 2, 1)
root.Transparency = 1
root.Material = Enum.Material.Plastic
root.BrickColor = BrickColor.new("Medium stone grey")
if getgenv().HitboxAdornments[plr] then
getgenv().HitboxAdornments[plr]:Destroy()
getgenv().HitboxAdornments[plr] = nil
end
end
end
end
end
})
MiscTab:CreateSlider({
Name = "Hitbox Size",
Range = {10, 200},
Increment = 5,
CurrentValue = getgenv().HomeSettings.HitboxSize,
Callback = function(v)
getgenv().HomeSettings.HitboxSize = v
if getgenv().HomeSettings.HitboxEnabled then
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
local char = plr.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local root = char.HumanoidRootPart
root.Size = Vector3.new(v, v, v)
if getgenv().HitboxAdornments[plr] then
getgenv().HitboxAdornments[plr].Size = root.Size
end
end
end
end
end
})
MiscTab:CreateButton({
Name = "Bring All",
Callback = function()
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local root = char.HumanoidRootPart
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
local pchar = plr.Character
if pchar and pchar:FindFirstChild("HumanoidRootPart") then
pcall(function()
pchar.HumanoidRootPart.CFrame = root.CFrame * CFrame.new(Vector3.new(math.random(-5, 5), 0, math.random(-5, 5)))
end)
end
end
end
})
end)
if not success then
warn("MiscTab creation failed: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to create Misc tab: " .. tostring(err),
Duration = 5
})
end
end
local antiFlingConn = RunService.Stepped:Connect(function()
if not getgenv().MiscSettings.AntiFling then return end
for plr, part in pairs(getgenv().AntiFlingParts) do
local char = plr.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local root = char.HumanoidRootPart
pcall(function()
part.Position = root.Position
end)
else
pcall(function() part:Destroy() end)
getgenv().AntiFlingParts[plr] = nil
end
end
end)
table.insert(getgenv().Connections, antiFlingConn)
-- ======= Player Tab =======
local success, err = pcall(function()
PlayerTab:CreateSection("Movement Settings")
PlayerTab:CreateToggle({
Name = "Walkspeed",
CurrentValue = getgenv().PlayerSettings.WalkspeedEnabled,
Callback = function(v)
getgenv().PlayerSettings.WalkspeedEnabled = v
end
})
PlayerTab:CreateSlider({
Name = "Walkspeed Amount",
Range = {16, 100},
Increment = 1,
CurrentValue = getgenv().PlayerSettings.Walkspeed,
Callback = function(v) getgenv().PlayerSettings.Walkspeed = v end
})
PlayerTab:CreateButton({
Name = "Reset Walkspeed",
Callback = function()
getgenv().PlayerSettings.Walkspeed = 16
getgenv().PlayerSettings.WalkspeedEnabled = false
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub",
Content = "Walkspeed reset to 16.",
Duration = 3
})
end
end
})
PlayerTab:CreateToggle({
Name = "Jump Power",
CurrentValue = getgenv().PlayerSettings.JumpPowerEnabled,
Callback = function(v) getgenv().PlayerSettings.JumpPowerEnabled = v end
})
PlayerTab:CreateSlider({
Name = "Jump Power Amount",
Range = {50, 200},
Increment = 1,
CurrentValue = getgenv().PlayerSettings.JumpPower,
Callback = function(v) getgenv().PlayerSettings.JumpPower = v end
})
PlayerTab:CreateButton({
Name = "Reset Jump Power",
Callback = function()
getgenv().PlayerSettings.JumpPower = 50
getgenv().PlayerSettings.JumpPowerEnabled = false
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub",
Content = "Jump Power reset to 50.",
Duration = 3
})
end
end
})
PlayerTab:CreateSection("Extra Settings")
PlayerTab:CreateToggle({
Name = "Infinite Jump",
CurrentValue = getgenv().PlayerSettings.InfiniteJump,
Callback = function(v) getgenv().PlayerSettings.InfiniteJump = v end
})
PlayerTab:CreateToggle({
Name = "Noclip",
CurrentValue = getgenv().PlayerSettings.NoclipEnabled,
Callback = function(v) getgenv().PlayerSettings.NoclipEnabled = v end
})
PlayerTab:CreateToggle({
Name = "Fly",
CurrentValue = getgenv().PlayerSettings.FlyEnabled,
Callback = function(v)
getgenv().PlayerSettings.FlyEnabled = v
if not v and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
local root = LocalPlayer.Character.HumanoidRootPart
if root:FindFirstChild("FlyBV") then
root.FlyBV:Destroy()
end
end
end
})
PlayerTab:CreateSlider({
Name = "Fly Speed",
Range = {50, 1000},
Increment = 10,
CurrentValue = getgenv().PlayerSettings.FlySpeed,
Callback = function(v) getgenv().PlayerSettings.FlySpeed = v end
})
end)
if not success then
warn("PlayerTab creation failed: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to create Player tab: " .. tostring(err),
Duration = 5
})
end
end
local flyConn = nil
local function toggleFly()
if not getgenv().PlayerSettings.FlyEnabled then
if flyConn then
pcall(function() flyConn:Disconnect() end)
flyConn = nil
end
if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
local root = LocalPlayer.Character.HumanoidRootPart
if root:FindFirstChild("FlyBV") then
root.FlyBV:Destroy()
end
end
return
end
if flyConn then
pcall(function() flyConn:Disconnect() end)
end
flyConn = RunService.Stepped:Connect(function()
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local root = char.HumanoidRootPart
if not root:FindFirstChild("FlyBV") then
local bv = Instance.new("BodyVelocity")
bv.Name = "FlyBV"
bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
bv.Velocity = Vector3.new(0, 0, 0)
bv.Parent = root
end
local cam = workspace.CurrentCamera
local moveDir = Vector3.new(0, 0, 0)
local userInput = UserInputService:GetKeysPressed()
for _, input in pairs(userInput) do
if input.KeyCode == Enum.KeyCode.W then
moveDir = moveDir + cam.CFrame.LookVector
end
if input.KeyCode == Enum.KeyCode.S then
moveDir = moveDir - cam.CFrame.LookVector
end
if input.KeyCode == Enum.KeyCode.A then
moveDir = moveDir - cam.CFrame.RightVector
end
if input.KeyCode == Enum.KeyCode.D then
moveDir = moveDir + cam.CFrame.RightVector
end
if input.KeyCode == Enum.KeyCode.Space then
moveDir = moveDir + Vector3.new(0, 1, 0)
end
if input.KeyCode == Enum.KeyCode.LeftControl then
moveDir = moveDir - Vector3.new(0, 1, 0)
end
end
if moveDir.Magnitude > 0 then
moveDir = moveDir.Unit * getgenv().PlayerSettings.FlySpeed
end
root.FlyBV.Velocity = moveDir
root.CFrame = CFrame.new(root.Position) * CFrame.Angles(0, cam.CFrame.Yaw, 0)
end)
table.insert(getgenv().Connections, flyConn)
end
local playerConn = RunService.Stepped:Connect(function()
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then
pcall(function()
if getgenv().PlayerSettings.WalkspeedEnabled then
hum.WalkSpeed = getgenv().PlayerSettings.Walkspeed
else
hum.WalkSpeed = 16
end
if getgenv().PlayerSettings.JumpPowerEnabled then
hum.JumpPower = getgenv().PlayerSettings.JumpPower
else
hum.JumpPower = 50
end
end)
end
if getgenv().PlayerSettings.NoclipEnabled then
for _, part in pairs(char and char:GetDescendants() or {}) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
toggleFly()
end)
table.insert(getgenv().Connections, playerConn)
local infJumpConn = UserInputService.JumpRequest:Connect(function()
if getgenv().PlayerSettings.InfiniteJump and LocalPlayer.Character then
local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if hum then
hum:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
table.insert(getgenv().Connections, infJumpConn)
-- ======= Anti-AFK =======
local afkConn = Players.LocalPlayer.Idled:Connect(function()
if getgenv().MiscSettings.AntiAFK then
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.new())
end
end)
table.insert(getgenv().Connections, afkConn)
-- ======= Player Events =======
Players.PlayerAdded:Connect(function(plr)
if getgenv().MiscSettings.AntiFling and plr ~= LocalPlayer then
local char = plr.Character or plr.CharacterAdded:Wait()
local root = char:WaitForChild("HumanoidRootPart")
local part = Instance.new("Part")
part.Size = Vector3.new(2, 2, 1)
part.Position = root.Position
part.Anchored = true
part.Transparency = 1
part.CanCollide = true
part.Parent = workspace
getgenv().AntiFlingParts[plr] = part
end
if getgenv().ESPSettings.Enabled then
local char = plr.Character or plr.CharacterAdded:Wait()
local root = char:WaitForChild("HumanoidRootPart")
local success, err = pcall(function()
local box = Instance.new("BoxHandleAdornment")
box.Size = root.Size + Vector3.new(2, 4, 2)
box.Adornee = root
box.Color3 = getgenv().ESPSettings.Color
box.Transparency = 0.5
box.AlwaysOnTop = true
box.ZIndex = 5
box.Parent = CoreGui
getgenv().ESPBoxes[plr] = box
end)
if not success then
warn("Box ESP creation failed for new player " .. plr.Name .. ": " .. tostring(err))
end
end
if getgenv().ESPSettings.NamesEnabled then
local success, err = pcall(function()
createNameESP(plr)
end)
if not success then
warn("Names ESP creation failed for new player " .. plr.Name .. ": " .. tostring(err))
end
end
if getgenv().ESPSettings.SkeletonEnabled then
local char = plr.Character or plr.CharacterAdded:Wait()
createSkeletonESP(plr)
end
if getgenv().HomeSettings.HitboxEnabled then
local char = plr.Character or plr.CharacterAdded:Wait()
local root = char:WaitForChild("HumanoidRootPart")
local success, err = pcall(function()
local size = getgenv().HomeSettings.HitboxSize
root.Size = Vector3.new(size, size, size)
root.Transparency = 0.7
root.BrickColor = BrickColor.new("Really red")
root.Material = Enum.Material.Neon
local adorn = Instance.new("BoxHandleAdornment")
adorn.Size = root.Size
adorn.Adornee = root
adorn.Color3 = Color3.fromRGB(255, 0, 0)
adorn.Transparency = 0.7
adorn.AlwaysOnTop = false
adorn.ZIndex = 0
adorn.Parent = CoreGui
getgenv().HitboxAdornments[plr] = adorn
end)
if not success then
warn("Hitbox Expander creation failed for new player " .. plr.Name .. ": " .. tostring(err))
end
end
end)
Players.PlayerRemoving:Connect(function(plr)
if getgenv().AimbotSettings.LockedTarget == plr then
getgenv().AimbotSettings.LockedTarget = nil
end
if getgenv().ESPBoxes[plr] then
pcall(function() getgenv().ESPBoxes[plr]:Destroy() end)
getgenv().ESPBoxes[plr] = nil
end
if getgenv().ESPNames[plr] then
pcall(function() getgenv().ESPNames[plr]:Destroy() end)
getgenv().ESPNames[plr] = nil
end
if getgenv().SkeletonLines[plr] then
pcall(function()
if getgenv().SkeletonLines[plr].Connection then
getgenv().SkeletonLines[plr].Connection:Disconnect()
end
for _, line in pairs(getgenv().SkeletonLines[plr].Limbs or {}) do
pcall(function() line:Remove() end)
end
end)
getgenv().SkeletonLines[plr] = nil
end
if getgenv().AntiFlingParts[plr] then
pcall(function() getgenv().AntiFlingParts[plr]:Destroy() end)
getgenv().AntiFlingParts[plr] = nil
end
if getgenv().HitboxAdornments[plr] then
pcall(function() getgenv().HitboxAdornments[plr]:Destroy() end)
getgenv().HitboxAdornments[plr] = nil
end
if plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
local root = plr.Character.HumanoidRootPart
root.Size = Vector3.new(2, 2, 1)
root.Transparency = 1
root.Material = Enum.Material.Plastic
root.BrickColor = BrickColor.new("Medium stone grey")
end
end)
LocalPlayer.CharacterAdded:Connect(function(char)
local root = char:WaitForChild("HumanoidRootPart")
if getgenv().PlayerSettings.FlyEnabled then
toggleFly()
end
if getgenv().ESPSettings.SkeletonEnabled then
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
if plr.Character then
createSkeletonESP(plr)
end
end
end
end)
-- ======= Chat Commands =======
local function onChat(msg)
if msg == "/antion" then
getgenv().MiscSettings.AntiFling = true
for _, plr in pairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
local char = plr.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local root = char.HumanoidRootPart
local part = Instance.new("Part")
part.Size = Vector3.new(2, 2, 1)
part.Position = root.Position
part.Anchored = true
part.Transparency = 1
part.CanCollide = true
part.Parent = workspace
getgenv().AntiFlingParts[plr] = part
end
end
elseif msg == "/antioff" then
getgenv().MiscSettings.AntiFling = false
for plr, part in pairs(getgenv().AntiFlingParts) do
pcall(function() part:Destroy() end)
getgenv().AntiFlingParts[plr] = nil
end
end
end
LocalPlayer.Chatted:Connect(onChat)
-- ======= Final Setup =======
getgenv().ScriptLoaded = true
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub",
Content = "Valox Hub v1.8.7 loaded successfully!",
Duration = 5
})
end
end) -- Close the pcall block from tab creation
if not success then
warn("Tab creation and setup failed: " .. tostring(err))
if not getgenv().MiscSettings.DisableNotifications then
Rayfield:Notify({
Title = "Valox Hub Error",
Content = "Failed to complete script setup: " .. tostring(err),
Duration = 5
})
end
end
![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)


totally trash
ai twin