-- ========================================================= -- ✨ SRLOLHub: THE FINAL PERFECT EDITION ✨ -- ========================================================= local lp = game.Players.LocalPlayer local mouse = lp:GetMouse() local ts = game:GetService("TeleportService") local uis = game:GetService("UserInputService") local runService = game:GetService("RunService") local lighting = game:GetService("Lighting") local camera = workspace.CurrentCamera -- --- [Translation] --- local i18n = { ["English"] = { title="SRLOLHub", move="Movement", visual="Visuals", tool="Tools", fps="Combat", anti="Anti/Server", hub="GUI Hub", lang="Language", speed="WalkSpeed", jump="JumpPower", infJ="Inf Jump", noclip="Noclip", fly="Run Fly", rtp="Random TP", fp="First Person", tp="Third Person", esp="ESP Glow", xray="X-Ray", day="Always Day", flood="Flood Map", btool="Get Build Tool", tptool="Get TP Tool", ladder="Spawn Ladder", cdel="Click Delete", aim="Auto Aimbot", assist="Auto Assist", anchor="Anti-Bring", rejoin="Rejoin", shop="Server Hop", exit="Exit GUI?", yes="YES", no="NO", exec="Execute Script", bsize="Build Size (X,Y,Z)" }, ["日本語"] = { title="SRLOLHub", move="移動", visual="視覚/環境", tool="ツール", fps="FPS", anti="Anti/鯖", hub="GUIハブ", lang="言語", speed="移動速度", jump="ジャンプ力", infJ="無限ジャンプ", noclip="壁抜け", fly="Fly実行", rtp="ランダムTP", fp="1人称視点", tp="3人称視点", esp="ESP発光", xray="壁透視", day="真昼固定", flood="マップ水没", btool="Build Tool取得", tptool="TP Tool取得", ladder="ハシゴ生成", cdel="クリック消去", aim="自動エイム", assist="自動アシスト", anchor="位置固定", rejoin="再参加", shop="鯖ホップ", exit="GUIを消去しますか?", yes="はい", no="いいえ", exec="スクリプト実行", bsize="ビルドサイズ (X,Y,Z)" }, ["Español"] = { title="SRLOLHub", move="Movimiento", visual="Visual", tool="Herramientas", fps="Combate", anti="Anti/Serv", hub="Hub GUI", lang="Idioma", speed="Velocidad", jump="Salto", infJ="Salto Inf", noclip="Sin Colisión", fly="Volar", rtp="TP Aleatorio", fp="1ª Persona", tp="3ª Persona", esp="Brillo ESP", xray="Rayos X", day="Siempre Día", flood="Inundar", btool="Herram. Const", tptool="Herram. TP", ladder="Escalera", cdel="Click Borrar", aim="Auto Aimbot", assist="Auto Asist", anchor="Anclar", rejoin="Reunirse", shop="Saltar Serv", exit="¿Cerrar GUI?", yes="SÍ", no="NO", exec="Ejecutar Script", bsize="Tamaño (X,Y,Z)" }, ["한국어"] = { title="SRLOLHub", move="이동", visual="시각/환경", tool="도구", fps="전투", anti="안티/서버", hub="GUI 허브", lang="언어", speed="이동 속도", jump="점프력", infJ="무한 점프", noclip="노클립", fly="플라이 실행", rtp="랜덤 TP", fp="1인칭", tp="3인칭", esp="ESP 발광", xray="엑스레이", day="항상 낮", flood="맵 침수", btool="빌드 도구", tptool="TP 도구", ladder="사다리 생성", cdel="클릭 삭제", aim="자동 에임", assist="자동 어시스트", anchor="위치 고정", rejoin="재접속", shop="서버 홉", exit="GUI를 종료하시겠습니까?", yes="예", no="아니오", exec="스크립트 실행", bsize="빌드 크기 (X,Y,Z)" }, ["中文"] = { title="SRLOLHub", move="移動", visual="視覚", tool="工具", fps="自瞄", anti="反制", hub="脚本庫", lang="語言", speed="移動速度", jump="跳躍力", infJ="無限跳躍", noclip="穿牆", fly="飛行模式", rtp="隨機傳送", fp="第一人稱", tp="第三人稱", esp="透視發光", xray="透視", day="鎖定白天", flood="地圖淹没", btool="獲得建築工具", tptool="獲得傳送工具", ladder="生成梯子", cdel="點擊删除", aim="自動自瞄", assist="自動輔助", anchor="位置固定", rejoin="重新連接", shop="換服", exit="确定退出吗?", yes="是", no="否", exec="執行腳本", bsize="建筑尺寸 (X,Y,Z)" } } local currentLang = "English" local elements = {} -- Manage all objects to be translated local buildSize = Vector3.new(4,1,4) -- --- [GUI] --- local ScreenGui = Instance.new("ScreenGui", game:GetService("CoreGui")) ScreenGui.Name = "SRLOLHub" local MainFrame = Instance.new("Frame", ScreenGui) MainFrame.Size = UDim2.new(0, 520, 0, 420) MainFrame.Position = UDim2.new(0.5, -260, 0.5, -210) MainFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 12) MainFrame.Active = true MainFrame.Draggable = true local TopBar = Instance.new("Frame", MainFrame) TopBar.Size = UDim2.new(1, 0, 0, 30) TopBar.BackgroundColor3 = Color3.fromRGB(30, 30, 40) local TitleLabel = Instance.new("TextLabel", TopBar) TitleLabel.Size = UDim2.new(1, -100, 1, 0) TitleLabel.Position = UDim2.new(0, 10, 0, 0) TitleLabel.TextColor3 = Color3.new(1, 1, 1) TitleLabel.BackgroundTransparency = 1 TitleLabel.Font = Enum.Font.SourceSansBold TitleLabel.TextXAlignment = Enum.TextXAlignment.Left local SideBar = Instance.new("Frame", MainFrame) SideBar.Size = UDim2.new(0, 130, 1, -30) SideBar.Position = UDim2.new(0, 0, 0, 30) SideBar.BackgroundColor3 = Color3.fromRGB(22, 22, 22) Instance.new("UIListLayout", SideBar) local TabContainer = Instance.new("Frame", MainFrame) TabContainer.Size = UDim2.new(1, -130, 1, -30) TabContainer.Position = UDim2.new(0, 130, 0, 30) TabContainer.BackgroundTransparency = 1 -- --- [Translation] --- local function UpdateUI() local d = i18n[currentLang] TitleLabel.Text = d.title for obj, info in pairs(elements) do if obj.Parent then local baseText = d[info.key] or info.key if info.isToggle then local stateText = obj.BackgroundColor3 == Color3.fromRGB(30, 80, 30) and "ON" or "OFF" obj.Text = baseText .. ": " .. stateText elseif obj:IsA("TextBox") then obj.PlaceholderText = baseText else obj.Text = baseText end end end end local function RegisterElement(obj, key, isToggle) elements[obj] = {key = key, isToggle = isToggle} end -- --- [UI] --- local function CreateTab(id, i18nKey) local frame = Instance.new("ScrollingFrame", TabContainer) frame.Size = UDim2.new(1, 0, 1, 0) frame.BackgroundTransparency = 1 frame.Visible = false frame.CanvasSize = UDim2.new(0, 0, 6, 0) frame.ScrollBarThickness = 2 Instance.new("UIListLayout", frame).HorizontalAlignment = Enum.HorizontalAlignment.Center frame.UIListLayout.Padding = UDim.new(0, 8) local btn = Instance.new("TextButton", SideBar) btn.Size = UDim2.new(1, 0, 0, 40) btn.BackgroundColor3 = Color3.fromRGB(28, 28, 28) btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.SourceSansBold RegisterElement(btn, i18nKey, false) btn.MouseButton1Click:Connect(function() for _, t in pairs(TabContainer:GetChildren()) do if t:IsA("ScrollingFrame") then t.Visible = false end end for _, b in pairs(SideBar:GetChildren()) do if b:IsA("TextButton") then b.BackgroundColor3 = Color3.fromRGB(28, 28, 28) end end frame.Visible = true btn.BackgroundColor3 = Color3.fromRGB(90, 40, 180) end) return frame end local function AddButton(parent, i18nKey, color, callback) local btn = Instance.new("TextButton", parent) btn.Size = UDim2.new(0.9, 0, 0, 35) btn.BackgroundColor3 = color btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.SourceSansBold RegisterElement(btn, i18nKey, false) btn.MouseButton1Click:Connect(callback) return btn end local function AddToggle(parent, i18nKey, callback) local enabled = false local btn = AddButton(parent, i18nKey, Color3.fromRGB(80, 30, 30), function() end) elements[btn].isToggle = true btn.MouseButton1Click:Connect(function() enabled = not enabled btn.BackgroundColor3 = enabled and Color3.fromRGB(30, 80, 30) or Color3.fromRGB(80, 30, 30) btn.Text = i18n[currentLang][i18nKey] .. (enabled and ": ON" or ": OFF") callback(enabled) end) return btn end -- --- [Tab] --- local moveT = CreateTab("Move", "move") local visualT = CreateTab("Visual", "visual") local toolT = CreateTab("Tool", "tool") local fpsT = CreateTab("FPS", "fps") local antiT = CreateTab("Anti", "anti") local hubT = CreateTab("Hub", "hub") local langT = CreateTab("Lang", "lang") -- --- [Function] --- -- 1. Movement AddToggle(moveT, "speed", function(s) _G.wsLoop = s task.spawn(function() while _G.wsLoop do if lp.Character then lp.Character.Humanoid.WalkSpeed = _G.ws or 16 end task.wait() end end) end) local wsIn = Instance.new("TextBox", moveT); wsIn.Size = UDim2.new(0.9,0,0,30); wsIn.BackgroundColor3=Color3.fromRGB(30,30,30); wsIn.TextColor3=Color3.new(1,1,1); RegisterElement(wsIn, "speed", false) wsIn.FocusLost:Connect(function() _G.ws = tonumber(wsIn.Text) end) AddToggle(moveT, "jump", function(s) _G.jpLoop = s task.spawn(function() while _G.jpLoop do if lp.Character then lp.Character.Humanoid.UseJumpPower=true lp.Character.Humanoid.JumpPower=_G.jp or 50 lp.Character.Humanoid.JumpHeight=_G.jp or 7.2 end task.wait() end end) end) local jpIn = Instance.new("TextBox", moveT); jpIn.Size = UDim2.new(0.9,0,0,30); jpIn.BackgroundColor3=Color3.fromRGB(30,30,30); jpIn.TextColor3=Color3.new(1,1,1); RegisterElement(jpIn, "jump", false) jpIn.FocusLost:Connect(function() _G.jp = tonumber(jpIn.Text) end) AddToggle(moveT, "infJ", function(s) _G.infJ = s end) uis.JumpRequest:Connect(function() if _G.infJ then lp.Character:FindFirstChildOfClass("Humanoid"):ChangeState(3) end end) AddToggle(moveT, "noclip", function(s) _G.noclip = s end) runService.Stepped:Connect(function() if _G.noclip and lp.Character then for _,v in pairs(lp.Character:GetDescendants()) do if v:IsA("BasePart") then v.CanCollide = false end end end end) AddButton(moveT, "fly", Color3.fromRGB(0,100,100), function() loadstring(game:HttpGet("https://raw.githubusercontent.com/adenalinabon-pixel/Fly-gui/refs/heads/main/The%20fly%20gui%20script"))() end) AddButton(moveT, "rtp", Color3.fromRGB(70,80,120), function() local p=game.Players:GetPlayers() local t=p[math.random(1,#p)] if t and t.Character then lp.Character:MoveTo(t.Character.HumanoidRootPart.Position) end end) -- 2. Visuals AddButton(visualT, "fp", Color3.fromRGB(50,50,50), function() lp.CameraMode = Enum.CameraMode.LockFirstPerson end) AddButton(visualT, "tp", Color3.fromRGB(50,50,50), function() lp.CameraMode = Enum.CameraMode.Classic lp.CameraMaxZoomDistance = 128 end) AddToggle(visualT, "esp", function(s) _G.esp = s if not s then for _,p in pairs(game.Players:GetPlayers()) do if p.Character and p.Character:FindFirstChild("Highlight") then p.Character.Highlight:Destroy() end end end task.spawn(function() while _G.esp do for _,p in pairs(game.Players:GetPlayers()) do if p~=lp and p.Character and not p.Character:FindFirstChild("Highlight") then Instance.new("Highlight", p.Character) end end task.wait(1) end end) end) AddToggle(visualT, "xray", function(s) for _,v in pairs(workspace:GetDescendants()) do if v:IsA("BasePart") and not v:IsDescendantOf(lp.Character) then v.Transparency = s and 0.5 or 0 end end end) AddToggle(visualT, "day", function(s) lighting.ClockTime = s and 12 or 14 end) AddToggle(visualT, "flood", function(s) if s then workspace.Terrain:FillBlock(CFrame.new(0,0,0), Vector3.new(2048, 60, 2048), Enum.Material.Water) else workspace.Terrain:FillBlock(CFrame.new(0,0,0), Vector3.new(2048, 60, 2048), Enum.Material.Air) end end) -- 3. Tools AddButton(toolT, "btool", Color3.fromRGB(0,120,120), function() local t=Instance.new("Tool",lp.Backpack) t.Name="Build" t.RequiresHandle=false t.Activated:Connect(function() local p=Instance.new("Part",workspace) p.Size=buildSize p.Anchored=true p.Position=mouse.Hit.p+Vector3.new(0, buildSize.Y/2, 0) end) end) local bsIn = Instance.new("TextBox", toolT); bsIn.Size = UDim2.new(0.9,0,0,30); bsIn.BackgroundColor3=Color3.fromRGB(30,30,30); bsIn.TextColor3=Color3.new(1,1,1); RegisterElement(bsIn, "bsize", false) bsIn.FocusLost:Connect(function() local s = bsIn.Text:split(",") if #s == 3 then buildSize = Vector3.new(tonumber(s[1]), tonumber(s[2]), tonumber(s[3])) end end) AddButton(toolT, "tptool", Color3.fromRGB(80,80,120), function() local t=Instance.new("Tool",lp.Backpack) t.Name="TP" t.RequiresHandle=false t.Activated:Connect(function() lp.Character:MoveTo(mouse.Hit.p) end) end) AddButton(toolT, "ladder", Color3.fromRGB(100,70,20), function() local s=lp.Character.HumanoidRootPart.CFrame*CFrame.new(0,-3,-3) for i=1,15 do local p=Instance.new("Part",workspace) p.Size=Vector3.new(4,0.5,1) p.Anchored=true p.CFrame=s*CFrame.new(0,i*1.2,0) end end) AddToggle(toolT, "cdel", function(s) _G.cDel=s end) mouse.Button1Down:Connect(function() if _G.cDel and mouse.Target and mouse.Target.Name~="BasePlate" then mouse.Target:Destroy() end end) -- 4. Combat (FPS) local ab, aa = false, false AddToggle(fpsT, "aim", function(s) ab=s aa=false end) AddToggle(fpsT, "assist", function(s) aa=s ab=false end) runService:BindToRenderStep("AimLock", 201, function() if ab or aa then local target, dist = nil, math.huge for _,p in pairs(game.Players:GetPlayers()) do if p~=lp and p.Character and p.Character:FindFirstChild("Head") and p.Character.Humanoid.Health>0 then local pos,os = camera:WorldToViewportPoint(p.Character.Head.Position) if os and (Vector2.new(pos.X,pos.Y)-Vector2.new(mouse.X,mouse.Y)).Magnitude < dist then dist=(Vector2.new(pos.X,pos.Y)-Vector2.new(mouse.X,mouse.Y)).Magnitude target=p end end end if target then local tCF = CFrame.new(camera.CFrame.Position, target.Character.Head.Position) camera.CFrame = ab and tCF or camera.CFrame:Lerp(tCF, 0.2) end end end) -- 5. Hub & Executor AddButton(hubT, "Infinite Yield", Color3.fromRGB(0,80,160), function() loadstring(game:HttpGet('https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source'))() end) AddButton(hubT, "c00lgui Reborn", Color3.fromRGB(120,0,0), function() loadstring(game:HttpGet("https://pastebin.com/raw/kxuNSVD3"))() end) local exB = Instance.new("TextBox", hubT); exB.Size = UDim2.new(0.9, 0, 0, 100); exB.MultiLine = true; exB.BackgroundColor3 = Color3.fromRGB(30,30,30); exB.TextColor3 = Color3.new(1,1,1); exB.ClearTextOnFocus = false; RegisterElement(exB, "exec", false) AddButton(hubT, "exec", Color3.fromRGB(0,120,0), function() loadstring(exB.Text)() end) -- 6. Anti/Server AddButton(antiT, "anchor", Color3.fromRGB(120,30,30), function() if lp.Character then lp.Character.HumanoidRootPart.Anchored = not lp.Character.HumanoidRootPart.Anchored end end) AddButton(antiT, "rejoin", Color3.fromRGB(50,50,50), function() ts:TeleportToPlaceInstance(game.PlaceId, game.JobId, lp) end) AddButton(antiT, "shop", Color3.fromRGB(60,60,100), function() local s = game:GetService("HttpService"):JSONDecode(game:HttpGet("https://games.roblox.com/v1/games/"..game.PlaceId.."/servers/Public?limit=100")).data for _,v in pairs(s) do if v.id ~= game.JobId and v.playing < v.maxPlayers then ts:TeleportToPlaceInstance(game.PlaceId, v.id, lp) break end end end) -- 7. Language for langName, _ in pairs(i18n) do local b = Instance.new("TextButton", langT) b.Size = UDim2.new(0.9, 0, 0, 35) b.Text = langName b.BackgroundColor3 = Color3.fromRGB(40,40,50) b.TextColor3 = Color3.new(1,1,1) b.Font = Enum.Font.SourceSansBold b.MouseButton1Click:Connect(function() currentLang = langName UpdateUI() end) end -- --- [End] --- local function Exit() local cfm = Instance.new("Frame", ScreenGui); cfm.Size = UDim2.new(0,200,0,100); cfm.Position = UDim2.new(0.5,-100,0.5,-50); cfm.BackgroundColor3 = Color3.new(0,0,0) local t = Instance.new("TextLabel", cfm); t.Size = UDim2.new(1,0,0.6,0); t.TextColor3 = Color3.new(1,1,1); RegisterElement(t, "exit", false) local y = Instance.new("TextButton", cfm); y.Size = UDim2.new(0.5,0,0.4,0); y.Position = UDim2.new(0,0,0.6,0); RegisterElement(y, "yes", false); y.MouseButton1Click:Connect(function() ScreenGui:Destroy() end) local n = Instance.new("TextButton", cfm); n.Size = UDim2.new(0.5,0,0.4,0); n.Position = UDim2.new(0.5,0,0.6,0); RegisterElement(n, "no", false); n.MouseButton1Click:Connect(function() cfm:Destroy() end) UpdateUI() end local MinB = Instance.new("TextButton", TopBar); MinB.Size=UDim2.new(0,30,0,30); MinB.Position=UDim2.new(1,-90,0,0); MinB.Text="-"; MinB.MouseButton1Click:Connect(function() MainFrame.Size=UDim2.new(0,520,0,30); SideBar.Visible=false; TabContainer.Visible=false end) local MaxB = Instance.new("TextButton", TopBar); MaxB.Size=UDim2.new(0,30,0,30); MaxB.Position=UDim2.new(1,-60,0,0); MaxB.Text="□"; MaxB.MouseButton1Click:Connect(function() MainFrame.Size=UDim2.new(0,520,0,420); SideBar.Visible=true; TabContainer.Visible=true end) local ExtB = Instance.new("TextButton", TopBar); ExtB.Size=UDim2.new(0,30,0,30); ExtB.Position=UDim2.new(1,-30,0,0); ExtB.Text="X"; ExtB.BackgroundColor3=Color3.new(0.6,0,0); ExtB.MouseButton1Click:Connect(Exit) -- reset currentLang = "English" UpdateUI() moveT.Visible = true