-- AJ HUB | DELTA SAFE FULL local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LP = Players.LocalPlayer local Char = LP.Character or LP.CharacterAdded:Wait() local Hum = Char:WaitForChild("Humanoid") local HRP = Char:WaitForChild("HumanoidRootPart") -- ===== GUI ===== local gui = Instance.new("ScreenGui", LP.PlayerGui) gui.Name = "AJ_HUB_DELTA" local main = Instance.new("Frame", gui) main.Size = UDim2.new(0,300,0,260) main.Position = UDim2.new(0.5,-150,0.5,-130) main.BackgroundColor3 = Color3.fromRGB(0,0,0) main.Active = true main.Draggable = true local title = Instance.new("TextLabel", main) title.Size = UDim2.new(1,0,0,30) title.Text = "AJ HUB" title.TextColor3 = Color3.fromRGB(255,0,0) title.BackgroundTransparency = 1 title.Font = Enum.Font.GothamBold title.TextSize = 18 -- ===== TABS ===== local tabBar = Instance.new("Frame", main) tabBar.Size = UDim2.new(1,0,0,30) tabBar.Position = UDim2.new(0,0,0,30) tabBar.BackgroundTransparency = 1 local function newTab(name,x) local b = Instance.new("TextButton", tabBar) b.Size = UDim2.new(0.5,0,1,0) b.Position = UDim2.new(x,0,0,0) b.Text = name b.BackgroundColor3 = Color3.fromRGB(30,30,30) b.TextColor3 = Color3.new(1,1,1) return b end local moveTab = newTab("MOVEMENT",0) local espTab = newTab("ESP",0.5) local movePage = Instance.new("Frame", main) movePage.Position = UDim2.new(0,0,0,60) movePage.Size = UDim2.new(1,0,1,-60) movePage.BackgroundTransparency = 1 local espPage = movePage:Clone() espPage.Parent = main espPage.Visible = false local function show(page) movePage.Visible = false espPage.Visible = false page.Visible = true end moveTab.MouseButton1Click:Connect(function() show(movePage) end) espTab.MouseButton1Click:Connect(function() show(espPage) end) -- ===== SPEED ===== local speedBtn = Instance.new("TextButton", movePage) speedBtn.Size = UDim2.new(0.8,0,0,30) speedBtn.Position = UDim2.new(0.1,0,0,10) speedBtn.Text = "Speed : OFF" speedBtn.BackgroundColor3 = Color3.fromRGB(40,40,40) speedBtn.TextColor3 = Color3.new(1,1,1) local speedOn = false speedBtn.MouseButton1Click:Connect(function() speedOn = not speedOn Hum.WalkSpeed = speedOn and 50 or 16 speedBtn.Text = speedOn and "Speed : ON" or "Speed : OFF" end) -- ===== JUMP POWER ===== local jumpBtn = speedBtn:Clone() jumpBtn.Parent = movePage jumpBtn.Position = UDim2.new(0.1,0,0,50) jumpBtn.Text = "Jump : OFF" local jumpOn = false jumpBtn.MouseButton1Click:Connect(function() jumpOn = not jumpOn Hum.JumpPower = jumpOn and 80 or 50 jumpBtn.Text = jumpOn and "Jump : ON" or "Jump : OFF" end) -- ===== FLY (MOBILE SAFE) ===== local flyBtn = speedBtn:Clone() flyBtn.Parent = movePage flyBtn.Position = UDim2.new(0.1,0,0,90) flyBtn.Text = "Fly : OFF" local flyOn = false local bv, bg local upHeld, downHeld = false, false flyBtn.MouseButton1Click:Connect(function() flyOn = not flyOn flyBtn.Text = flyOn and "Fly : ON" or "Fly : OFF" if flyOn then bv = Instance.new("BodyVelocity", HRP) bv.MaxForce = Vector3.new(1e5,1e5,1e5) bg = Instance.new("BodyGyro", HRP) bg.MaxTorque = Vector3.new(1e5,1e5,1e5) else if bv then bv:Destroy() end if bg then bg:Destroy() end end end) -- Mobile Fly Buttons local upBtn = speedBtn:Clone() upBtn.Parent = movePage upBtn.Position = UDim2.new(0.1,0,0,130) upBtn.Text = "UP" local downBtn = speedBtn:Clone() downBtn.Parent = movePage downBtn.Position = UDim2.new(0.1,0,0,170) downBtn.Text = "DOWN" upBtn.MouseButton1Down:Connect(function() upHeld = true end) upBtn.MouseButton1Up:Connect(function() upHeld = false end) downBtn.MouseButton1Down:Connect(function() downHeld = true end) downBtn.MouseButton1Up:Connect(function() downHeld = false end) RunService.RenderStepped:Connect(function() if flyOn and bv and bg then local move = Camera.CFrame.LookVector local y = (upHeld and 1 or 0) - (downHeld and 1 or 0) bv.Velocity = Vector3.new(move.X, y, move.Z) * 60 bg.CFrame = Camera.CFrame end end) -- ===== TELEPORT TO TAP ===== UIS.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.Touch or i.UserInputType == Enum.UserInputType.MouseButton1 then if UIS:IsKeyDown(Enum.KeyCode.LeftAlt) then local ray = workspace:Raycast(Camera.CFrame.Position, Camera.CFrame.LookVector * 500) if ray then HRP.CFrame = CFrame.new(ray.Position + Vector3.new(0,3,0)) end end end end) -- ===== ESP ===== local espBtn = speedBtn:Clone() espBtn.Parent = espPage espBtn.Position = UDim2.new(0.1,0,0,10) espBtn.Text = "ESP : OFF" local espOn = false local cache = {} local function dist(p) if p.Character and p.Character:FindFirstChild("HumanoidRootPart") then return math.floor((HRP.Position - p.Character.HumanoidRootPart.Position).Magnitude) end return 0 end local function addESP(p) if p == LP or cache[p] or not p.Character then return end local hrp = p.Character:FindFirstChild("HumanoidRootPart") if not hrp then return end local h = Instance.new("Highlight", p.Character) h.FillColor = Color3.fromRGB(255,0,0) local bill = Instance.new("BillboardGui", hrp) bill.Size = UDim2.new(0,200,0,40) bill.StudsOffset = Vector3.new(0,3,0) bill.AlwaysOnTop = true local txt = Instance.new("TextLabel", bill) txt.Size = UDim2.new(1,0,1,0) txt.BackgroundTransparency = 1 txt.TextColor3 = Color3.fromRGB(255,0,0) txt.TextScaled = true RunService.RenderStepped:Connect(function() if txt and p.Character then txt.Text = p.Name.." ["..dist(p).."m]" end end) cache[p] = {h,bill} end local function clearESP() for _,v in pairs(cache) do for _,i in pairs(v) do i:Destroy() end end cache = {} end espBtn.MouseButton1Click:Connect(function() espOn = not espOn espBtn.Text = espOn and "ESP : ON" or "ESP : OFF" clearESP() if espOn then for _,p in ipairs(Players:GetPlayers()) do addESP(p) end end end) print("AJ HUB LOADED (DELTA SAFE)")