-- 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)")
Comments
No comments yet
Be the first to share your thoughts!