
Keyless

-- =======================================================
-- PA HUB (GATEWAY & MAIN SYSTEM) - PUBLIC ENGLISH EDITION
-- =======================================================
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local SoundService = game:GetService("SoundService")
local HttpService = game:GetService("HttpService")
local UserInputService = game:GetService("UserInputService")
local ProximityPromptService = game:GetService("ProximityPromptService")
local TextChatService = game:GetService("TextChatService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CoreGui = game:GetService("CoreGui")
local player = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- CLEANUP PREVIOUS INTERFACES
if CoreGui:FindFirstChild("FabiHUD") then CoreGui.FabiHUD:Destroy() end
if CoreGui:FindFirstChild("PaHubGateway") then CoreGui.PaHubGateway:Destroy() end
-- =======================================================
-- GATEWAY SCREEN (YOUTUBE SUBSCRIPTION VERIFICATION)
-- =======================================================
local GatewayGui = Instance.new("ScreenGui", CoreGui)
GatewayGui.Name = "PaHubGateway"
GatewayGui.ResetOnSpawn = false
local GatewayFrame = Instance.new("Frame", GatewayGui)
GatewayFrame.Size = UDim2.new(0, 340, 0, 220)
GatewayFrame.Position = UDim2.new(0.5, -170, 0.5, -110)
GatewayFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
GatewayFrame.BorderSizePixel = 0
GatewayFrame.Active = true
GatewayFrame.Draggable = true
local GatewayCorner = Instance.new("UICorner", GatewayFrame)
GatewayCorner.CornerRadius = UDim.new(0, 8)
local GatewayTitle = Instance.new("TextLabel", GatewayFrame)
GatewayTitle.Size = UDim2.new(1, 0, 0, 45)
GatewayTitle.Text = "PA HUB - Verification Required"
GatewayTitle.TextColor3 = Color3.fromRGB(240, 240, 240)
GatewayTitle.TextSize = 16
GatewayTitle.Font = Enum.Font.SourceSansBold
GatewayTitle.BackgroundTransparency = 1
local GatewayDesc = Instance.new("TextLabel", GatewayFrame)
GatewayDesc.Size = UDim2.new(0.9, 0, 0, 35)
GatewayDesc.Position = UDim2.new(0.05, 0, 0.22, 0)
GatewayDesc.Text = "Click 'Go to YouTube Channel' first to copy the link and start the unlock timer."
GatewayDesc.TextColor3 = Color3.fromRGB(180, 180, 180)
GatewayDesc.TextSize = 13
GatewayDesc.Font = Enum.Font.SourceSans
GatewayDesc.BackgroundTransparency = 1
GatewayDesc.TextWrapped = true
local YTBtn = Instance.new("TextButton", GatewayFrame)
YTBtn.Size = UDim2.new(0.85, 0, 0, 35)
YTBtn.Position = UDim2.new(0.075, 0, 0.42, 0)
YTBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
YTBtn.Text = "Go to YouTube Channel"
YTBtn.TextColor3 = Color3.fromRGB(240, 240, 240)
YTBtn.TextSize = 15
YTBtn.Font = Enum.Font.SourceSansBold
Instance.new("UICorner", YTBtn).CornerRadius = UDim.new(0, 6)
local AccessBtn = Instance.new("TextButton", GatewayFrame)
AccessBtn.Size = UDim2.new(0.85, 0, 0, 40)
AccessBtn.Position = UDim2.new(0.075, 0, 0.68, 0)
AccessBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
AccessBtn.Text = "Click YouTube Link First..."
AccessBtn.TextColor3 = Color3.fromRGB(170, 170, 170)
AccessBtn.TextSize = 15
AccessBtn.Font = Enum.Font.SourceSansBold
AccessBtn.AutoButtonColor = false
Instance.new("UICorner", AccessBtn).CornerRadius = UDim.new(0, 6)
local verified = false
local timerStarted = false
YTBtn.MouseButton1Click:Connect(function()
local ytLink = "https://youtube.com/@albiroja_edit?si=GN4T0zn8U-ZvVDzK"
if setclipboard then
setclipboard(ytLink)
YTBtn.Text = "Link Copied! Go Subscribe!"
else
YTBtn.Text = "Link: youtube.com/@albiroja_edit"
end
if not timerStarted then
timerStarted = true
task.spawn(function()
for i = 10, 1, -1 do
AccessBtn.Text = "Wait " .. i .. " seconds..."
task.wait(1)
end
AccessBtn.Text = "Unlock Pa Hub"
AccessBtn.BackgroundColor3 = Color3.fromRGB(35, 160, 70)
AccessBtn.TextColor3 = Color3.fromRGB(240, 240, 240)
AccessBtn.AutoButtonColor = true
verified = true
end)
end
end)
AccessBtn.MouseButton1Click:Connect(function()
if verified then
GatewayGui:Destroy()
LoadMainPaHub()
end
end)
-- =======================================================
-- MAIN PA HUB INITIALIZATION FUNCTION
-- =======================================================
function LoadMainPaHub()
-- Global State Variables
_G.Speed = 16
_G.Insta = false
_G.Jump = false
_G.ESPActive = false
_G.SavedPosition = nil
-- Circus Coordinates for Immortality
local CoordsInmortal = Vector3.new(-153.576538, 169.695557, -267.119263)
-- Audio Variables
local CurrentSound = nil
-- CONFIG FOLDER
local CONFIG_FOLDER = "PaHubConfigs"
if makefolder and not isfolder(CONFIG_FOLDER) then
pcall(function() makefolder(CONFIG_FOLDER) end)
end
-- =======================================================
-- RAYFIELD GUI INTERFACE
-- =======================================================
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
local Window = Rayfield:CreateWindow({
Name = "Pa Hub",
LoadingTitle = "Loading Pa Hub...",
LoadingSubtitle = "Experience / Abstraction",
Theme = "Default",
DisableRayfieldPrompts = true,
DisableBuildWarnings = true,
ConfigurationSaving = {
Enabled = true,
FolderName = "PaHubConfigs",
FileName = "LastSession"
},
Discord = { Enabled = false }
})
Rayfield:Notify({
Title = "Pa Hub Loaded!",
Content = "No Key System, No Ads. Enjoy the Hub!",
Duration = 4
})
-- =======================================================
-- TAB 1: MAIN MOVEMENT, ESP & SPECTATE
-- =======================================================
local TabMain = Window:CreateTab("Main", nil)
TabMain:CreateSection("Movement & Interactions", true)
-- WalkSpeed
local S_Speed = TabMain:CreateSlider({
Name = "WalkSpeed",
Range = {16, 200},
Increment = 1,
CurrentValue = 16,
Callback = function(v) _G.Speed = v end
})
-- Infinite Jump
local T_Jump = TabMain:CreateToggle({
Name = "Infinite Jump",
CurrentValue = false,
Callback = function(v) _G.Jump = v end
})
-- Instant Interact
local T_Insta = TabMain:CreateToggle({
Name = "Instant Interact (Manual)",
CurrentValue = false,
Callback = function(v) _G.Insta = v end
})
TabMain:CreateSection("Visuals & ESP", true)
-- ESP Toggle (Green with Chams)
local T_ESP = TabMain:CreateToggle({
Name = "ESP Player Names & Chams (Green)",
CurrentValue = false,
Callback = function(v)
_G.ESPActive = v
if not v then
for _, p in pairs(Players:GetPlayers()) do
if p.Character then
if p.Character:FindFirstChild("GreenChams") then
p.Character.GreenChams:Destroy()
end
if p.Character:FindFirstChild("Head") and p.Character.Head:FindFirstChild("NameESP") then
p.Character.Head.NameESP:Destroy()
end
end
end
end
end
})
TabMain:CreateSection("Player Spectate", true)
local function GetPlayerList()
local list = {"None (Reset)"}
for _, p in pairs(Players:GetPlayers()) do
if p ~= player then
table.insert(list, p.Name)
end
end
return list
end
local DropdownSpectate = TabMain:CreateDropdown({
Name = "Spectate Player",
Options = GetPlayerList(),
CurrentOption = {"None (Reset)"},
MultipleOptions = false,
Callback = function(Option)
local targetName = Option[1]
if targetName == "None (Reset)" or not targetName then
if player.Character and player.Character:FindFirstChild("Humanoid") then
Camera.CameraSubject = player.Character.Humanoid
end
else
local targetPlayer = Players:FindFirstChild(targetName)
if targetPlayer and targetPlayer.Character and targetPlayer.Character:FindFirstChild("Humanoid") then
Camera.CameraSubject = targetPlayer.Character.Humanoid
end
end
end,
})
-- =======================================================
-- TAB 2: SURVIVOR, WAYPOINTS & CAINE
-- =======================================================
local TabInmortal = Window:CreateTab("Survivor", nil)
TabInmortal:CreateSection("Immortality Process", true)
TabInmortal:CreateParagraph({
Title = "Immortality Guide",
Content = "First you have to get distracted, then you have to make Caine send you to the basement, then activate the immortality option, you will be teleported to the circus and now you will be immortal."
})
TabInmortal:CreateButton({
Name = "Immortality (Teleport to Circus)",
Callback = function()
local char = player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(CoordsInmortal)
Rayfield:Notify({Title = "Immortality", Content = "Teleported to the Circus successfully!", Duration = 3})
end
end
})
TabInmortal:CreateSection("Saved Waypoint System", true)
TabInmortal:CreateButton({
Name = "Save Current Position",
Callback = function()
local char = player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
_G.SavedPosition = root.CFrame
Rayfield:Notify({Title = "Saved", Content = "New position saved successfully.", Duration = 3})
end
end
})
TabInmortal:CreateButton({
Name = "Teleport to Point",
Callback = function()
local char = player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
if _G.SavedPosition then
root.CFrame = _G.SavedPosition
Rayfield:Notify({Title = "Teleport", Content = "Returned to saved point!", Duration = 3})
else
Rayfield:Notify({Title = "No Position", Content = "Please save a position first.", Duration = 3})
end
end
end
})
local T_TpBtn = TabInmortal:CreateToggle({
Name = "Floating Teleport Button",
CurrentValue = false,
Callback = function(v)
if _G.TpBtn then
_G.TpBtn.Visible = v
end
end
})
TabInmortal:CreateSection("Call Caine (Floating Button)", true)
TabInmortal:CreateParagraph({
Title = "Caine Summoner",
Content = "It creates a floating button that, when pressed, will automatically call Caine, typing \"caine\" automatically in the chat."
})
local T_CaineBtn = TabInmortal:CreateToggle({
Name = "Toggle Caine Button",
CurrentValue = false,
Callback = function(v)
if _G.CaineBtn then
_G.CaineBtn.Visible = v
end
end
})
-- =======================================================
-- TAB 3: MUSIC PLAYER
-- =======================================================
local TabMusic = Window:CreateTab("Music Player", nil)
TabMusic:CreateSection("Audio Settings", true)
local InputAudioID = "124956832051872"
TabMusic:CreateInput({
Name = "Enter Music ID",
PlaceholderText = "124956832051872",
RemoveTextAfterFocusLost = false,
Callback = function(text)
if text and text ~= "" then
InputAudioID = text
end
end,
})
TabMusic:CreateButton({
Name = "Play Music",
Callback = function()
if CurrentSound then CurrentSound:Stop(); CurrentSound:Destroy(); CurrentSound = nil end
local success, err = pcall(function()
CurrentSound = Instance.new("Sound")
CurrentSound.SoundId = "rbxassetid://" .. InputAudioID
CurrentSound.Volume = 1
CurrentSound.Looped = true
CurrentSound.Parent = SoundService
CurrentSound:Play()
end)
if success then
Rayfield:Notify({Title = "Audio Playing...", Content = "Playing ID: " .. InputAudioID, Duration = 3})
else
Rayfield:Notify({Title = "Audio Error", Content = "Invalid ID.", Duration = 3})
end
end
})
TabMusic:CreateButton({
Name = "Stop Music",
Callback = function()
if CurrentSound then CurrentSound:Stop(); CurrentSound:Destroy(); CurrentSound = nil end
end
})
-- =======================================================
-- TAB 4: CONFIGS
-- =======================================================
local TabConfigs = Window:CreateTab("Settings", nil)
TabConfigs:CreateSection("Custom Configuration", true)
local ConfigNameInput = "default"
TabConfigs:CreateInput({
Name = "Config Name",
PlaceholderText = "Type a name...",
RemoveTextAfterFocusLost = false,
Callback = function(text) ConfigNameInput = text end,
})
TabConfigs:CreateButton({
Name = "Save Current Settings",
Callback = function()
if writefile then
local data = {
Speed = _G.Speed,
Insta = _G.Insta,
Jump = _G.Jump
}
local success = pcall(function()
writefile(CONFIG_FOLDER .. "/" .. ConfigNameInput .. ".json", HttpService:JSONEncode(data))
end)
if success then
Rayfield:Notify({Title = "Saved", Content = "Configuration saved successfully.", Duration = 3})
else
Rayfield:Notify({Title = "Error", Content = "Could not save settings.", Duration = 3})
end
end
end
})
TabConfigs:CreateButton({
Name = "Load Settings",
Callback = function()
if readfile and isfile then
local path = CONFIG_FOLDER .. "/" .. ConfigNameInput .. ".json"
if isfile(path) then
local success, content = pcall(function() return readfile(path) end)
if success then
local decoded = HttpService:JSONDecode(content)
if decoded.Speed ~= nil then S_Speed:Set(decoded.Speed); _G.Speed = decoded.Speed end
if decoded.Insta ~= nil then T_Insta:Set(decoded.Insta); _G.Insta = decoded.Insta end
if decoded.Jump ~= nil then T_Jump:Set(decoded.Jump); _G.Jump = decoded.Jump end
Rayfield:Notify({Title = "Loaded", Content = "Settings applied successfully.", Duration = 3})
end
else
Rayfield:Notify({Title = "Not Found", Content = "Configuration file does not exist.", Duration = 3})
end
end
end
})
-- =======================================================
-- FLOATING BUTTONS (CLEAN STYLE, MATCHING FONTS)
-- =======================================================
local ScreenGui = Instance.new("ScreenGui", CoreGui)
ScreenGui.Name = "FabiHUD"
ScreenGui.ResetOnSpawn = false
-- 1. FLOATING CAINE BUTTON
local function EnviarMensajeCaineDirecto()
pcall(function()
if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then
local textChannel = TextChatService.TextChannels.RBXGeneral
if textChannel then textChannel:SendAsync("caine") end
else
ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer("caine", "All")
end
end)
end
local CaineBtn = Instance.new("TextButton", ScreenGui)
CaineBtn.Name = "CaineBtn"
CaineBtn.Size = UDim2.new(0, 55, 0, 55)
CaineBtn.Position = UDim2.new(0.85, 0, 0.4, 0)
CaineBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
CaineBtn.BackgroundTransparency = 0.15
CaineBtn.Text = "Caine"
CaineBtn.TextSize = 14
CaineBtn.TextColor3 = Color3.fromRGB(240, 240, 240)
CaineBtn.Font = Enum.Font.SourceSansBold
CaineBtn.Visible = false
CaineBtn.Active = true
CaineBtn.Draggable = true
Instance.new("UICorner", CaineBtn).CornerRadius = UDim.new(1, 0)
_G.CaineBtn = CaineBtn
CaineBtn.MouseButton1Click:Connect(function()
CaineBtn.BackgroundColor3 = Color3.fromRGB(35, 160, 70)
task.delay(0.4, function() CaineBtn.BackgroundColor3 = Color3.fromRGB(180, 40, 40) end)
EnviarMensajeCaineDirecto()
end)
-- 2. FLOATING TELEPORT BUTTON
local function TeletransportarAPuntoGuardado()
local char = player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
if _G.SavedPosition then
root.CFrame = _G.SavedPosition
Rayfield:Notify({Title = "Teleport", Content = "Teleported!", Duration = 2})
else
Rayfield:Notify({Title = "No Position", Content = "Save a position first.", Duration = 2})
end
end
end
local TpBtn = Instance.new("TextButton", ScreenGui)
TpBtn.Name = "TpBtn"
TpBtn.Size = UDim2.new(0, 55, 0, 55)
TpBtn.Position = UDim2.new(0.85, 0, 0.52, 0)
TpBtn.BackgroundColor3 = Color3.fromRGB(40, 100, 180)
TpBtn.BackgroundTransparency = 0.15
TpBtn.Text = "TP"
TpBtn.TextSize = 16
TpBtn.TextColor3 = Color3.fromRGB(240, 240, 240)
TpBtn.Font = Enum.Font.SourceSansBold
TpBtn.Visible = false
TpBtn.Active = true
TpBtn.Draggable = true
Instance.new("UICorner", TpBtn).CornerRadius = UDim.new(1, 0)
_G.TpBtn = TpBtn
TpBtn.MouseButton1Click:Connect(function()
TpBtn.BackgroundColor3 = Color3.fromRGB(35, 160, 70)
task.delay(0.3, function() TpBtn.BackgroundColor3 = Color3.fromRGB(40, 100, 180) end)
TeletransportarAPuntoGuardado()
end)
-- =======================================================
-- MOTORS (OPTIMIZED LOOPS EVERY 5 SECONDS)
-- =======================================================
ProximityPromptService.PromptShown:Connect(function(prompt)
if _G.Insta then prompt.HoldDuration = 0 end
end)
task.spawn(function()
while task.wait(5) do
if _G.Insta then
for _, prompt in pairs(workspace:GetDescendants()) do
if prompt:IsA("ProximityPrompt") and prompt.HoldDuration > 0 then
prompt.HoldDuration = 0
end
end
end
end
end)
task.spawn(function()
while task.wait(5) do
if _G.ESPActive then
for _, p in pairs(Players:GetPlayers()) do
if p ~= player and p.Character then
local char = p.Character
local head = char:FindFirstChild("Head")
local hum = char:FindFirstChildOfClass("Humanoid")
if head and hum and hum.Health > 0 then
if not char:FindFirstChild("GreenChams") then
local highlight = Instance.new("Highlight")
highlight.Name = "GreenChams"
highlight.Adornee = char
highlight.FillColor = Color3.fromRGB(0, 255, 100)
highlight.FillTransparency = 0.5
highlight.OutlineColor = Color3.fromRGB(240, 240, 240)
highlight.OutlineTransparency = 0.2
highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
highlight.Parent = char
end
if not head:FindFirstChild("NameESP") then
local billboard = Instance.new("BillboardGui")
billboard.Name = "NameESP"
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 80, 0, 20)
billboard.StudsOffset = Vector3.new(0, 2, 0)
billboard.Parent = head
local text = Instance.new("TextLabel")
text.Parent = billboard
text.BackgroundTransparency = 1
text.Size = UDim2.new(1, 0, 1, 0)
text.Text = p.DisplayName
text.TextColor3 = Color3.fromRGB(50, 255, 100)
text.TextStrokeTransparency = 0
text.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
text.TextScaled = true
text.Font = Enum.Font.SourceSansBold
end
end
end
end
end
end
end)
UserInputService.JumpRequest:Connect(function()
if _G.Jump and player.Character and player.Character:FindFirstChildOfClass("Humanoid") then
player.Character:FindFirstChildOfClass("Humanoid"):ChangeState(Enum.HumanoidStateType.Jumping)
end
end)
RunService.RenderStepped:Connect(function()
local char = player.Character; if not char then return end
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then hum.WalkSpeed = _G.Speed end
end)
endNo comments yet for this script.