-- Carrega a versão mais recente da AquaUI
local AquaUI = loadstring(game:HttpGet("https://gist.githubusercontent.com/marcossilvasilva3456789-commits/1e745d8c6d417ca5ac1f2057569f81c2/raw/6e4d6015fd4846f897c552de2290343ffc526777/pasbevos%2520library%2520atualizado%2520beta%2520v2"))()
-- Criar o menu
local menu = AquaUI:CreateWindow("Zerax Hub", UDim2.new(0, 650, 0, 550))
-- Serviços
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local LocalPlayer = Players.LocalPlayer
-- ============================================
-- ABA: HUMANOID (character manipulation)
-- ============================================
local HumanoidTab = menu:CreateTab("Humanoid")
-- Função auxiliar para obter o Humanoid local
local function getLocalHumanoid()
local char = LocalPlayer.Character
if char then return char:FindFirstChildOfClass("Humanoid") end
end
-- ===== Secção: Movement =====
local secMovement = menu:CreateSection(HumanoidTab, "⚡ Movement")
-- ---------- Double Speed ----------
local baseWalkSpeed = 16
local speedToggle = false
local speedConnection = nil
local function startSpeedConnection()
if speedConnection then speedConnection:Disconnect() end
speedConnection = RunService.Heartbeat:Connect(function()
if not speedToggle then return end
local h = getLocalHumanoid()
if h and math.abs(h.WalkSpeed - baseWalkSpeed * 2) > 0.01 then
h.WalkSpeed = baseWalkSpeed * 2
end
end)
end
menu:AddToggle(secMovement, {
Title = "Double Speed",
Description = "Doubles WalkSpeed and prevents it from dropping",
Default = false,
Callback = function(val)
speedToggle = val
local hum = getLocalHumanoid()
if val then
if hum then
baseWalkSpeed = hum.WalkSpeed
hum.WalkSpeed = baseWalkSpeed * 2
end
startSpeedConnection()
else
if speedConnection then speedConnection:Disconnect(); speedConnection = nil end
if hum then hum.WalkSpeed = baseWalkSpeed end
end
end
})
-- ---------- Double Jump ----------
local baseJumpPower = 50
local jumpToggle = false
local jumpConnection = nil
local function startJumpConnection()
if jumpConnection then jumpConnection:Disconnect() end
jumpConnection = RunService.Heartbeat:Connect(function()
if not jumpToggle then return end
local h = getLocalHumanoid()
if h and math.abs(h.JumpPower - baseJumpPower * 2) > 0.01 then
h.JumpPower = baseJumpPower * 2
end
end)
end
menu:AddToggle(secMovement, {
Title = "Double Jump",
Description = "Doubles JumpPower and prevents it from dropping",
Default = false,
Callback = function(val)
jumpToggle = val
local hum = getLocalHumanoid()
if val then
if hum then
baseJumpPower = hum.JumpPower
hum.JumpPower = baseJumpPower * 2
end
startJumpConnection()
else
if jumpConnection then jumpConnection:Disconnect(); jumpConnection = nil end
if hum then hum.JumpPower = baseJumpPower end
end
end
})
-- ---------- Infinite Jump ----------
local infJumpEnabled = false
local jumpRequestConnection = nil
local function hookInfiniteJump()
if jumpRequestConnection then jumpRequestConnection:Disconnect() end
jumpRequestConnection = UserInputService.JumpRequest:Connect(function()
if not infJumpEnabled then return end
local h = getLocalHumanoid()
if h then
h:ChangeState(Enum.HumanoidStateType.Jumping)
end
end)
end
menu:AddToggle(secMovement, {
Title = "Infinite Jump",
Description = "Allows you to jump in the air (press jump key)",
Default = false,
Callback = function(val)
infJumpEnabled = val
if val then
hookInfiniteJump()
else
if jumpRequestConnection then jumpRequestConnection:Disconnect(); jumpRequestConnection = nil end
end
end
})
-- Reaplica tudo quando o personagem renasce
LocalPlayer.CharacterAdded:Connect(function(char)
local hum = char:WaitForChild("Humanoid")
if infJumpEnabled then hookInfiniteJump() end
if speedToggle then
if hum then hum.WalkSpeed = baseWalkSpeed * 2 end
startSpeedConnection()
end
if jumpToggle then
if hum then hum.JumpPower = baseJumpPower * 2 end
startJumpConnection()
end
end)
-- ===== Player Selection & Goto =====
local secPlayers = menu:CreateSection(HumanoidTab, "👥 Player Selector")
local targetPlayer = nil
local playerDropdown = nil
local function getPlayerNames()
local names = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer then
table.insert(names, plr.Name)
end
end
if #names == 0 then table.insert(names, "No players") end
return names
end
local function createPlayerDropdown()
local names = getPlayerNames()
playerDropdown = menu:AddDropdown(secPlayers, {
Title = "Select Target",
Options = names,
Default = names[1] or "No players",
Callback = function(opt)
for _, p in ipairs(Players:GetPlayers()) do
if p.Name == opt then
targetPlayer = p
break
end
end
end
})
end
createPlayerDropdown()
menu:CreateButton(secPlayers, {
Title = "🔄 Refresh List",
Callback = function()
local newNames = getPlayerNames()
if playerDropdown and playerDropdown.Update then
playerDropdown:Update(newNames)
else
pcall(function() playerDropdown:Destroy() end)
createPlayerDropdown()
end
AquaUI:Notify({Title = "Player List", Description = "List updated", Duration = 2})
end
})
menu:AddSeparator(secPlayers)
menu:CreateButton(secPlayers, {
Title = "Goto Player",
Description = "Teleport next to the selected player",
Callback = function()
if not targetPlayer then
AquaUI:Notify({Title = "Error", Description = "No player selected", Duration = 2})
return
end
local targetChar = targetPlayer.Character
if not targetChar or not targetChar:FindFirstChild("HumanoidRootPart") then
AquaUI:Notify({Title = "Error", Description = "Target character not loaded", Duration = 2})
return
end
local myChar = LocalPlayer.Character
if not myChar or not myChar:FindFirstChild("HumanoidRootPart") then
AquaUI:Notify({Title = "Error", Description = "Your character not loaded", Duration = 2})
return
end
local targetRoot = targetChar.HumanoidRootPart
local myRoot = myChar.HumanoidRootPart
myRoot.CFrame = targetRoot.CFrame * CFrame.new(3, 0, 0)
AquaUI:Notify({Title = "Teleported", Description = "You are now next to "..targetPlayer.Name, Duration = 2})
end
})
-- ============================================
-- ABA: CATCHER (TP mechanics)
-- ============================================
local CatcherTab = menu:CreateTab("Catcher")
local secCatcher = menu:CreateSection(CatcherTab, "🌀 Teleport Control")
local function getLocalRoot()
local char = LocalPlayer.Character
return char and char:FindFirstChild("HumanoidRootPart")
end
local function getTargetRoot(targetPlr)
local char = targetPlr.Character
return char and char:FindFirstChild("HumanoidRootPart")
end
-- ---------- TP All ----------
local tpAllEnabled = false
local tpAllThread = nil
local function tpAllLoop()
while tpAllEnabled do
local localRoot = getLocalRoot()
if localRoot then
local others = {}
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer then table.insert(others, p) end
end
for _, plr in ipairs(others) do
if not tpAllEnabled then break end
local targetRoot = getTargetRoot(plr)
if targetRoot then
localRoot.CFrame = targetRoot.CFrame
localRoot.Velocity = Vector3.zero
localRoot.RotVelocity = Vector3.zero
pcall(function()
sethiddenproperty(localRoot, "PhysicsRepRootPart", targetRoot)
end)
end
task.wait(0.2)
end
end
task.wait()
end
end
menu:AddToggle(secCatcher, {
Title = "TP All",
Description = "Continuously teleports you inside every player (0.2s each)",
Default = false,
Callback = function(val)
tpAllEnabled = val
if val then
AquaUI:Notify({Title = "TP All", Description = "Activated", Duration = 2})
tpAllThread = task.spawn(tpAllLoop)
else
if tpAllThread then task.cancel(tpAllThread) end
AquaUI:Notify({Title = "TP All", Description = "Deactivated", Duration = 2})
end
end
})
-- ---------- TP Automatically ----------
local tpAutoEnabled = false
local tpAutoThread = nil
local function tpAutoLoop()
local currentIndex = 1
local lastSwitch = tick()
while tpAutoEnabled do
local localRoot = getLocalRoot()
if localRoot then
local others = {}
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer then table.insert(others, p) end
end
if #others > 0 then
local now = tick()
if now - lastSwitch >= 0.4 then
local target = others[currentIndex]
if target then
local targetRoot = getTargetRoot(target)
if targetRoot then
localRoot.CFrame = targetRoot.CFrame
localRoot.Velocity = Vector3.zero
localRoot.RotVelocity = Vector3.zero
pcall(function()
sethiddenproperty(localRoot, "PhysicsRepRootPart", targetRoot)
end)
end
end
currentIndex = currentIndex + 1
if currentIndex > #others then
currentIndex = 1
end
lastSwitch = now
end
end
end
task.wait()
end
end
menu:AddToggle(secCatcher, {
Title = "TP Automatically",
Description = "Auto teleport to players one by one, 0.4s repeat, 0.1s inside",
Default = false,
Callback = function(val)
tpAutoEnabled = val
if val then
AquaUI:Notify({Title = "TP Automatically", Description = "Enabled", Duration = 2})
tpAutoThread = task.spawn(tpAutoLoop)
else
if tpAutoThread then task.cancel(tpAutoThread) end
AquaUI:Notify({Title = "TP Automatically", Description = "Disabled", Duration = 2})
end
end
})
-- ============================================
-- ABA: ESP (Player ESP)
-- ============================================
local EspTab = menu:CreateTab("ESP")
local secEsp = menu:CreateSection(EspTab, "👁️ ESP Settings")
local espEnabled = false
local showRedOnly = false
local showBlueOnly = false
-- Armazena objetos de ESP para cada jogador
local espObjects = {} -- [player] = { highlight, billboard, connection }
local function getTeamColor(player)
-- Tenta identificar time pela propriedade TeamColor
if player.Team and player.Team.TeamColor then
local color = player.Team.TeamColor.Color
-- Simplificação: se o tom for próximo de vermelho ou azul
if color.r > 0.8 and color.g < 0.3 and color.b 0.8 and color.r < 0.3 and color.g 0.9 and color.g < 0.1 and color.b 0.9 and color.r < 0.1 and color.g < 0.1)
if showRedOnly and showBlueOnly then
return true
elseif showRedOnly then
return isRed
elseif showBlueOnly then
return isBlue
else
return true
end
end
local function createESP(player)
if espObjects[player] then return end
local function setup()
local char = player.Character
if not char then return end
local root = char:FindFirstChild("HumanoidRootPart")
local head = char:FindFirstChild("Head")
if not root or not head then return end
-- Highlight (caixa 3D)
local highlight = Instance.new("Highlight")
highlight.Name = "ESP_Highlight"
highlight.FillTransparency = 1
highlight.OutlineTransparency = 0
highlight.OutlineColor = getTeamColor(player)
highlight.Parent = char
-- BillboardGui para nome e distância
local billboard = Instance.new("BillboardGui")
billboard.Name = "ESP_Billboard"
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.StudsOffset = Vector3.new(0, 2.5, 0)
billboard.Parent = head
local label = Instance.new("TextLabel")
label.BackgroundTransparency = 1
label.TextColor3 = Color3.new(1, 1, 1)
label.TextStrokeTransparency = 0
label.Font = Enum.Font.SourceSansBold
label.TextScaled = true
label.Size = UDim2.new(1, 0, 1, 0)
label.Parent = billboard
local connection
connection = RunService.RenderStepped:Connect(function()
if not player.Parent then
connection:Disconnect()
return
end
local currentChar = player.Character
if not currentChar or currentChar ~= char then
-- Personagem mudou
connection:Disconnect()
espObjects[player] = nil
if shouldShow(player) then
createESP(player)
end
return
end
if not shouldShow(player) then
highlight.Enabled = false
billboard.Enabled = false
return
else
highlight.Enabled = true
billboard.Enabled = true
end
local myRoot = getLocalRoot()
local targetRoot = root
if myRoot and targetRoot then
local dist = (myRoot.Position - targetRoot.Position).Magnitude
label.Text = string.format("%s\n[%.0f studs]", player.Name, dist)
else
label.Text = player.Name
end
highlight.OutlineColor = getTeamColor(player)
end)
espObjects[player] = {
highlight = highlight,
billboard = billboard,
connection = connection
}
end
if player.Character then
setup()
end
player.CharacterAdded:Connect(function(char)
if shouldShow(player) then
-- Limpa objetos antigos se existirem
if espObjects[player] then
local old = espObjects[player]
if old.highlight then old.highlight:Destroy() end
if old.billboard then old.billboard:Destroy() end
if old.connection then old.connection:Disconnect() end
espObjects[player] = nil
end
setup()
end
end)
end
local function removeESP(player)
local obj = espObjects[player]
if not obj then return end
if obj.highlight then obj.highlight:Destroy() end
if obj.billboard then obj.billboard:Destroy() end
if obj.connection then obj.connection:Disconnect() end
espObjects[player] = nil
end
local function refreshAllESP()
for _, player in ipairs(Players:GetPlayers()) do
if shouldShow(player) then
if not espObjects[player] then
createESP(player)
end
else
removeESP(player)
end
end
end
-- Conexões de jogadores
Players.PlayerAdded:Connect(function(player)
if shouldShow(player) then
createESP(player)
end
player:GetPropertyChangedSignal("Team"):Connect(function()
if espEnabled then
refreshAllESP()
end
end)
end)
Players.PlayerRemoving:Connect(function(player)
removeESP(player)
end)
-- Toggles da UI
menu:AddToggle(secEsp, {
Title = "ESP Enabled",
Description = "Turns the ESP system on/off",
Default = false,
Callback = function(val)
espEnabled = val
if val then
refreshAllESP()
else
for player, _ in pairs(espObjects) do
removeESP(player)
end
end
end
})
menu:AddToggle(secEsp, {
Title = "Show Red Team Only",
Description = "Only highlight players on the Red team",
Default = false,
Callback = function(val)
showRedOnly = val
if espEnabled then refreshAllESP() end
end
})
menu:AddToggle(secEsp, {
Title = "Show Blue Team Only",
Description = "Only highlight players on the Blue team",
Default = false,
Callback = function(val)
showBlueOnly = val
if espEnabled then refreshAllESP() end
end
})
local CreditTab = menu:CreateTab("Credit")
local secCredit = menu:CreateSection(CreditTab, "Credits")
menu:AddLabel(secCredit, {
Title = "Creator: swat07_script"
})
menu:AddLabel(secCredit, {
Title = "Discord Server: https://discord.gg/vArYQrx4A"
})
menu:AddLabel(secCredit, {
Title = "Discord Owner: krnl"
})
menu:AddLabel(secCredit, {
Title = "Usernames: Krnl_oficial | Swat07_oficial"
})
menu:AddLabel(secCredit, {
Title = "Anyone who wants to join the Discord server, enter here"
})