
KeylessUniversal

-- Retrovibes Hub v17.1 (FE-friendly, categorias, fixes)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local PathfindingService = game:GetService("PathfindingService")
local TeleportService = game:GetService("TeleportService")
local TweenService = game:GetService("TweenService")
local StarterGui = game:GetService("StarterGui")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
-- Configs
local HUB_NAME = "Retrovibes"
local FLY_SPEED = 80
local FLY_SMOOTH = 0.12
local FLY_TOGGLE_KEY = Enum.KeyCode.L
local TOGGLE_GUI_KEY = Enum.KeyCode.Backspace
local SPIN_DANCE_ID = "rbxassetid://161099825" -- se quiser trocar, coloque seu ID
local LOW_GRAV_URL = "https://raw.githubusercontent.com/Bac0nHck/Scripts/refs/heads/main/zerogravity"
local PUNCHFLING_URL = "https://raw.githubusercontent.com/0Ben1/fe/main/obf_rf6iQURzu1fqrytcnLBAvW34C9N55kS9g9G3CKz086rC47M6632sEd4ZZYB0AYgV.lua.txt"
-- Estado
local flying = false
local bv, bg, flyConn = nil, nil, nil
local noclip = false
local noclipConn = nil
local pathfindActive = false
local pathConn = nil
local lastPosition = nil
-- Helpers
local function safeSendChat(msg)
if not msg or msg == "" then return end
-- Tenta SayMessageRequest (mais confiável)
local success, ev = pcall(function()
return game:GetService("ReplicatedStorage"):FindFirstChild("DefaultChatSystemChatEvents") and
game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents:FindFirstChild("SayMessageRequest")
end)
if success and ev and ev.FireServer then
pcall(function() ev:FireServer(msg, "All") end)
return
end
-- fallback
pcall(function() LocalPlayer:Chat(msg) end)
end
local function getHumanoidAndRoot(character)
if not character then return nil, nil end
local hum = character:FindFirstChildOfClass("Humanoid")
local root = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Torso") or character:FindFirstChild("UpperTorso")
return hum, root
end
-- GUI base (retro / categorias)
local screenGui = Instance.new("ScreenGui")
screenGui.Name = HUB_NAME.."_gui"
screenGui.ResetOnSpawn = false
screenGui.Parent = PlayerGui
local main = Instance.new("Frame")
main.Name = "Main"
main.Size = UDim2.new(0,460,0,480)
main.Position = UDim2.new(0.5,-230,0.14,0)
main.BackgroundColor3 = Color3.fromRGB(28,28,36)
main.BorderSizePixel = 2
main.BorderColor3 = Color3.fromRGB(70,70,90)
main.Parent = screenGui
-- Title bar (arrastável)
local titleBar = Instance.new("Frame", main)
titleBar.Size = UDim2.new(1,0,0,44)
titleBar.Position = UDim2.new(0,0,0,0)
titleBar.BackgroundColor3 = Color3.fromRGB(38,38,48)
local titleLabel = Instance.new("TextLabel", titleBar)
titleLabel.Size = UDim2.new(1,-120,1,0)
titleLabel.Position = UDim2.new(0,12,0,0)
titleLabel.BackgroundTransparency = 1
titleLabel.Font = Enum.Font.Legacy
titleLabel.TextSize = 20
titleLabel.TextColor3 = Color3.fromRGB(255,245,200)
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Text = "RETROVIBES Hub (v17.1)"
-- Welcome (english)
local welcomeLabel = Instance.new("TextLabel", main)
welcomeLabel.Size = UDim2.new(1,-20,0,26)
welcomeLabel.Position = UDim2.new(0,10,0,50)
welcomeLabel.BackgroundTransparency = 1
welcomeLabel.Font = Enum.Font.SourceSansItalic
welcomeLabel.TextSize = 15
welcomeLabel.TextColor3 = Color3.fromRGB(200,200,210)
welcomeLabel.Text = "Welcome to Retrovibes — classic admin vibes. Have fun!"
-- Close (destroy)
local closeBtn = Instance.new("TextButton", titleBar)
closeBtn.Size = UDim2.new(0,90,0,30)
closeBtn.Position = UDim2.new(1,-100,0,7)
closeBtn.Text = "Close"
closeBtn.Font = Enum.Font.Legacy
closeBtn.TextSize = 16
closeBtn.BackgroundColor3 = Color3.fromRGB(160,50,50)
closeBtn.TextColor3 = Color3.fromRGB(255,255,255)
local closeCorner = Instance.new("UICorner", closeBtn); closeCorner.CornerRadius = UDim.new(0,6)
closeBtn.MouseButton1Click:Connect(function() screenGui:Destroy() end)
-- Layout: left categories, right content
local leftCol = Instance.new("Frame", main)
leftCol.Size = UDim2.new(0,200,1,-90)
leftCol.Position = UDim2.new(0,10,0,86)
leftCol.BackgroundTransparency = 1
local content = Instance.new("Frame", main)
content.Size = UDim2.new(1,-230,1,-100)
content.Position = UDim2.new(0,220,0,86)
content.BackgroundColor3 = Color3.fromRGB(22,22,28)
local contentCorner = Instance.new("UICorner", content); contentCorner.CornerRadius = UDim.new(0,6)
local function clearContent()
for _,v in pairs(content:GetChildren()) do v:Destroy() end
end
-- Create category buttons
local categories = {"Movement","Fun","Fling","Player Settings","Misc"}
local catButtons = {}
for i,cat in ipairs(categories) do
local b = Instance.new("TextButton", leftCol)
b.Size = UDim2.new(1, -10, 0, 34)
b.Position = UDim2.new(0, 5, 0, (i-1)*40)
b.Text = cat
b.Font = Enum.Font.Legacy
b.TextSize = 16
b.TextColor3 = Color3.fromRGB(240,240,240)
b.BackgroundColor3 = Color3.fromRGB(44,44,56)
local u = Instance.new("UICorner", b); u.CornerRadius = UDim.new(0,6)
catButtons[cat] = b
end
-- UI helpers to create controls inside content
local function createLabel(txt, y)
local l = Instance.new("TextLabel", content)
l.Position = UDim2.new(0,12,0,y)
l.Size = UDim2.new(1,-24,0,22)
l.BackgroundTransparency = 1
l.Font = Enum.Font.SourceSans
l.TextSize = 15
l.TextColor3 = Color3.fromRGB(210,210,210)
l.Text = txt
return l
end
local function createButton(txt, y, cb)
local b = Instance.new("TextButton", content)
b.Position = UDim2.new(0,12,0,y)
b.Size = UDim2.new(1,-24,0,32)
b.BackgroundColor3 = Color3.fromRGB(60,60,80)
b.Font = Enum.Font.SourceSansBold
b.TextSize = 16
b.TextColor3 = Color3.fromRGB(240,240,240)
b.Text = txt
local u = Instance.new("UICorner", b); u.CornerRadius = UDim.new(0,6)
b.MouseButton1Click:Connect(function() cb(b) end)
return b
end
local function createSmallButton(txt, parent, pos)
local b = Instance.new("TextButton", parent)
b.Size = UDim2.new(0,80,0,26)
b.Position = pos
b.BackgroundColor3 = Color3.fromRGB(75,75,95)
b.Font = Enum.Font.SourceSans
b.TextSize = 14
b.Text = txt
local u = Instance.new("UICorner", b); u.CornerRadius = UDim.new(0,5)
return b
end
local function createInputBox(y, placeholder)
local box = Instance.new("TextBox", content)
box.Position = UDim2.new(0,12,0,y)
box.Size = UDim2.new(1,-24,0,28)
box.BackgroundColor3 = Color3.fromRGB(45,45,60)
box.PlaceholderText = placeholder or ""
box.Text = ""
box.Font = Enum.Font.SourceSans
box.TextSize = 16
box.TextColor3 = Color3.fromRGB(240,240,240)
local u = Instance.new("UICorner", box); u.CornerRadius = UDim.new(0,5)
return box
end
-- FUNCTIONALITY IMPLEMENTATIONS
-- FLY (suave)
local function enableFly()
local character = LocalPlayer.Character
local hum, root = getHumanoidAndRoot(character)
if not root then return end
if flying then return end
flying = true
bg = Instance.new("BodyGyro", root)
bg.MaxTorque = Vector3.new(1e5,1e5,1e5)
bg.P = 20
bv = Instance.new("BodyVelocity", root)
bv.MaxForce = Vector3.new(1e5,1e5,1e5)
bv.P = 125
bv.Velocity = Vector3.new(0,0,0)
flyConn = RunService.RenderStepped:Connect(function()
if not flying then return end
local cam = workspace.CurrentCamera
if not cam then return end
local dir = Vector3.new()
if UserInputService:IsKeyDown(Enum.KeyCode.W) then dir = dir + cam.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then dir = dir - cam.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then dir = dir - cam.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then dir = dir + cam.CFrame.RightVector end
local up = 0
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then up = up + 1 end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then up = up - 1 end
dir = Vector3.new(dir.X, up, dir.Z)
local desired = Vector3.new(0,0,0)
if dir.Magnitude > 0 then desired = dir.Unit * FLY_SPEED end
bv.Velocity = bv.Velocity:Lerp(desired, FLY_SMOOTH)
bg.CFrame = CFrame.new(root.Position, root.Position + cam.CFrame.LookVector)
end)
print("[Retrovibes] Fly enabled")
end
local function disableFly()
flying = false
if flyConn then flyConn:Disconnect(); flyConn = nil end
if bv then pcall(function() bv:Destroy() end); bv = nil end
if bg then pcall(function() bg:Destroy() end); bg = nil end
print("[Retrovibes] Fly disabled")
end
-- NOCOLLP
local function setNoclip(on)
noclip = on
if noclipConn then noclipConn:Disconnect(); noclipConn = nil end
if noclip then
noclipConn = RunService.Stepped:Connect(function()
local char = LocalPlayer.Character
if not char then return end
for _,part in pairs(char:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end)
else
local char = LocalPlayer.Character
if char then
for _,part in pairs(char:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
end
end
end
-- Spin Dance
local function playSpinDance()
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then
local anim = Instance.new("Animation")
anim.AnimationId = SPIN_DANCE_ID
local track = hum:LoadAnimation(anim)
track:Play()
end
end
-- Lows Gravity (external)
local function runLowGravity()
local ok, err = pcall(function()
local src = game:HttpGet(LOW_GRAV_URL, true)
local fn, le = loadstring(src)
if not fn then error(le) end
fn()
end)
if not ok then
warn("[Retrovibes] LowGravity failed:", err)
StarterGui:SetCore("ChatMakeSystemMessage", {Text = "[Retrovibes] Failed to load LowGravity."})
else
print("[Retrovibes] LowGravity loaded")
end
end
-- QuickChat hi
local function quickHi()
safeSendChat("hi")
end
-- Teleport UI: mostra lista de players para clicar
local function showPlayerSelection(actionFunc)
clearContent()
createLabel("Select a player:", 8)
local y = 36
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer then
local btn = createButton(p.Name, y, function()
actionFunc(p)
end)
y = y + 38
end
end
if y == 36 then
createLabel("No other players online.", 36)
end
end
-- Teleport to player
local function teleportToPlayer(target)
if not target or not target.Character then return end
local char = LocalPlayer.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
local thrp = target.Character and target.Character:FindFirstChild("HumanoidRootPart")
if hrp and thrp then
pcall(function() hrp.CFrame = thrp.CFrame + Vector3.new(0,3,0) end)
print("[Retrovibes] Teleported to", target.Name)
end
end
-- Pathfind to nearest/random player (runs while active)
local function startPathfindLoop()
if pathConn then pathConn:Disconnect(); pathConn = nil end
pathConn = RunService.Heartbeat:Connect(function()
local char = LocalPlayer.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local hrp = char.HumanoidRootPart
-- collect valid targets
local targets = {}
for _,p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
table.insert(targets, p)
end
end
if #targets == 0 then return end
-- pick nearest with 60% chance, else random
local pick
if math.random() < 0.6 then
local minD, minP = 1e9, nil
for _,p in ipairs(targets) do
local d = (p.Character.HumanoidRootPart.Position - hrp.Position).Magnitude
if d < minD then minD, minP = d, p end
end
pick = minP
else
pick = targets[math.random(1,#targets)]
end
if not pick or not pick.Character then return end
-- compute path and follow
local ok, path = pcall(function()
local pathObj = PathfindingService:CreatePath({AgentRadius=2,AgentHeight=5})
pathObj:ComputeAsync(hrp.Position, pick.Character.HumanoidRootPart.Position)
return pathObj
end)
if not ok or not path then return end
local waypoints = path:GetWaypoints()
for _,wp in ipairs(waypoints) do
if not pathConn then break end
-- smooth move: tween HRP to each waypoint (client-only visual)
pcall(function()
if hrp and hrp.Parent then
local goal = {CFrame = CFrame.new(wp.Position + Vector3.new(0,2,0))}
local tw = TweenService:Create(hrp, TweenInfo.new(0.35, Enum.EasingStyle.Linear), goal)
tw:Play()
tw.Completed:Wait(0.4)
end
end)
end
task.wait(0.25)
end)
end
local function stopPathfindLoop()
if pathConn then pathConn:Disconnect(); pathConn = nil end
end
-- Rejoin (client teleport)
local function rejoin()
pcall(function()
TeleportService:Teleport(game.PlaceId, LocalPlayer)
end)
end
-- Player settings helpers
local function getHumanoid()
return LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
end
-- CATEGORY CONTENTS
local function loadMovement()
clearContent()
createLabel("Movement", 6)
createButton(flying and "Disable Fly (L)" or "Enable Fly (L)", 36, function()
if flying then disableFly() else enableFly() end
end)
createButton(noclip and "Disable Noclip" or "Enable Noclip", 80, function(self)
setNoclip(not noclip)
-- update text
self.Text = noclip and "Disable Noclip" or "Enable Noclip"
end)
createButton("Low Gravity (remote)", 124, function()
runLowGravity()
end)
createButton("Teleport to player...", 168, function()
showPlayerSelection(teleportToPlayer)
end)
end
local function loadFun()
clearContent()
createLabel("Fun", 6)
createButton("Spin Dance (anim)", 36, function() playSpinDance() end)
createButton("Quick Chat: hi", 80, function() quickHi() end)
end
local function loadFling()
clearContent()
createLabel("Fling / Follow", 6)
createButton(pathfindActive and "Stop Pathfind" or "Start Pathfind (follow players)", 36, function(self)
pathfindActive = not pathfindActive
if pathfindActive then
startPathfindLoop()
self.Text = "Stop Pathfind"
else
stopPathfindLoop()
self.Text = "Start Pathfind (follow players)"
end
end)
end
local function loadPlayerSettings()
clearContent()
createLabel("Player Settings", 6)
local hum = getHumanoid()
local currentWalk = hum and hum.WalkSpeed or 0
local currentJump = hum and hum.JumpPower or 0
local wsLabel = createLabel("WalkSpeed: " .. tostring(currentWalk), 36)
local jpLabel = createLabel("JumpPower: " .. tostring(currentJump), 66)
-- quick +/- buttons
local plusWS = createSmallButton("+5", content, UDim2.new(1,-100,0,36))
plusWS.MouseButton1Click:Connect(function()
local h = getHumanoid()
if h then h.WalkSpeed = h.WalkSpeed + 5; wsLabel.Text = "WalkSpeed: "..tostring(h.WalkSpeed) end
end)
local minusWS = createSmallButton("-5", content, UDim2.new(1,-180,0,36))
minusWS.MouseButton1Click:Connect(function()
local h = getHumanoid()
if h then h.WalkSpeed = math.max(0, h.WalkSpeed - 5); wsLabel.Text = "WalkSpeed: "..tostring(h.WalkSpeed) end
end)
local plusJP = createSmallButton("+10", content, UDim2.new(1,-100,0,66))
plusJP.MouseButton1Click:Connect(function()
local h = getHumanoid()
if h then h.JumpPower = h.JumpPower + 10; jpLabel.Text = "JumpPower: "..tostring(h.JumpPower) end
end)
local minusJP = createSmallButton("-10", content, UDim2.new(1,-180,0,66))
minusJP.MouseButton1Click:Connect(function()
local h = getHumanoid()
if h then h.JumpPower = math.max(0, h.JumpPower - 10); jpLabel.Text = "JumpPower: "..tostring(h.JumpPower) end
end)
-- exact set boxes
local setWSBox = createInputBox(110, "Set WalkSpeed (number)...")
setWSBox.FocusLost:Connect(function(enter)
if not enter then return end
local n = tonumber(setWSBox.Text)
if n and getHumanoid() then getHumanoid().WalkSpeed = n; wsLabel.Text = "WalkSpeed: "..tostring(n) end
setWSBox.Text = ""
end)
local setJPBox = createInputBox(150, "Set JumpPower (number)...")
setJPBox.FocusLost:Connect(function(enter)
if not enter then return end
local n = tonumber(setJPBox.Text)
if n and getHumanoid() then getHumanoid().JumpPower = n; jpLabel.Text = "JumpPower: "..tostring(n) end
setJPBox.Text = ""
end)
end
local function loadMisc()
clearContent()
createLabel("Misc / Server", 6)
createButton("Rejoin (reconnect)", 36, function() rejoin() end)
createButton("Run Low Gravity (remote)", 80, function() runLowGravity() end)
-- punchfling removed by request
createButton("Close Hub (Destroy)", 124, function() screenGui:Destroy() end)
end
-- Hook category buttons
catButtons["Movement"].MouseButton1Click:Connect(loadMovement)
catButtons["Fun"].MouseButton1Click:Connect(loadFun)
catButtons["Fling"].MouseButton1Click:Connect(loadFling)
catButtons["Player Settings"].MouseButton1Click:Connect(loadPlayerSettings)
catButtons["Misc"].MouseButton1Click:Connect(loadMisc)
-- Default
loadMovement()
-- Keep lastPosition (for any potential future features)
RunService.Heartbeat:Connect(function()
local char = LocalPlayer.Character
if char and char:FindFirstChild("HumanoidRootPart") then
lastPosition = char.HumanoidRootPart.CFrame
end
end)
-- Reapply noclip / fly after respawn if needed
LocalPlayer.CharacterAdded:Connect(function(char)
task.wait(0.8)
if noclip then setNoclip(true) end
if flying then
-- cleanup old and re-enable
pcall(function() disableFly() end)
pcall(function() enableFly() end)
end
end)
-- Hotkeys: toggle GUI + fly
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == TOGGLE_GUI_KEY then
screenGui.Enabled = not screenGui.Enabled
elseif input.KeyCode == FLY_TOGGLE_KEY then
if flying then disableFly() else enableFly() end
end
end)
-- Final: small chat message welcome (client)
pcall(function() StarterGui:SetCore("ChatMakeSystemMessage", {Text = "[Retrovibes] Welcome! Retrovibes v17.1 loaded."}) end)
print("[Retrovibes] v17.1 loaded (LocalScript).")



kinda bad but i will listen to yall
update!