
KeylessUniversal

local player = game.Players.LocalPlayer
local camera = workspace.CurrentCamera
local userInput = game:GetService("UserInputService")
local runService = game:GetService("RunService")
local coreGui = game:GetService("CoreGui")
local mouse = player:GetMouse()
-- Trạng thái
local flyEnabled = false
local espEnabled = false
local speedEnabled = false
local wallbangEnabled = false
local aimBotEnabled = false
local noclipEnabled = false
local freecamEnabled = false
-- Biến nhân vật
local character = nil
local rootPart = nil
local humanoid = nil
-- Biến bay
local flyVelocity = nil
local flyGyro = nil
-- Tốc độ
local flySpeed = 50
local baseWalkSpeed = 16
local freecamSpeed = 30
local freecamSensitivity = 0.5
-- Wallbang
local wallbangConnection = nil
-- Aim Bot
local aimDistance = 200
local aimBotHighlights = {}
-- Noclip
local noclipBodyPosition = nil
-- GUI
local gui = nil
local btnFly, btnESP, btnSpeed, btnWallbang, btnAimBot, btnNoclip, btnFreecam = nil, nil, nil, nil, nil, nil, nil
local lblFlySpeed, lblWalkSpeed, lblFreecamSpeed = nil, nil, nil
local savedPositions = {}
local mainFrame = nil
local toggleFlashBtn = nil
-- Biến kéo thả
local dragging = false
local dragStart = nil
local startPos = nil
-- Góc quay camera Freecam
local cameraYaw = 0
local cameraPitch = 0
-- Trạng thái giữ chuột phải
local rightMouseHeld = false
local mouseLocked = false -- đã khóa chuột chưa
local function addCorner(obj, radius)
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, radius or 6)
corner.Parent = obj
end
-- ==================== HÀM LẤY NHÂN VẬT ====================
local function getCharacter()
character = player.Character
if character then
rootPart = character:FindFirstChild("HumanoidRootPart")
humanoid = character:FindFirstChild("Humanoid")
end
return character, rootPart, humanoid
end
-- ==================== CHỨC NĂNG BAY ====================
local function toggleFly()
flyEnabled = not flyEnabled
getCharacter()
if flyEnabled then
if humanoid then humanoid.PlatformStand = true end
if rootPart then
flyVelocity = Instance.new("BodyVelocity")
flyVelocity.MaxForce = Vector3.new(1e6, 1e6, 1e6)
flyVelocity.Parent = rootPart
flyGyro = Instance.new("BodyGyro")
flyGyro.MaxTorque = Vector3.new(1e6, 1e6, 1e6)
flyGyro.Parent = rootPart
end
print("🟢 BẬT BAY")
else
if flyVelocity then flyVelocity:Destroy(); flyVelocity = nil end
if flyGyro then flyGyro:Destroy(); flyGyro = nil end
if humanoid then humanoid.PlatformStand = false end
print("🔴 TẮT BAY")
end
if gui then updateGUI(); updateSpeedLabels() end
end
local function updateFly()
if flyEnabled then
if not getCharacter() or not rootPart then return end
if not flyVelocity or not flyVelocity.Parent then
flyVelocity = Instance.new("BodyVelocity")
flyVelocity.MaxForce = Vector3.new(1e6, 1e6, 1e6)
flyVelocity.Parent = rootPart
end
if not flyGyro or not flyGyro.Parent then
flyGyro = Instance.new("BodyGyro")
flyGyro.MaxTorque = Vector3.new(1e6, 1e6, 1e6)
flyGyro.Parent = rootPart
end
local camCF = camera.CFrame
local forward = camCF.LookVector * Vector3.new(1, 0, 1)
forward = forward.Unit
local right = camCF.RightVector * Vector3.new(1, 0, 1)
right = right.Unit
local up = Vector3.new(0, 1, 0)
local moveDir = Vector3.new(0, 0, 0)
if userInput:IsKeyDown(Enum.KeyCode.W) then moveDir = moveDir + forward end
if userInput:IsKeyDown(Enum.KeyCode.S) then moveDir = moveDir - forward end
if userInput:IsKeyDown(Enum.KeyCode.A) then moveDir = moveDir - right end
if userInput:IsKeyDown(Enum.KeyCode.D) then moveDir = moveDir + right end
if userInput:IsKeyDown(Enum.KeyCode.Space) then moveDir = moveDir + up end
if userInput:IsKeyDown(Enum.KeyCode.LeftShift) then moveDir = moveDir - up end
if moveDir.Magnitude > 0 then
moveDir = moveDir.Unit * flySpeed
end
flyVelocity.Velocity = moveDir
local lookDir = camera.CFrame.LookVector * Vector3.new(1, 0, 1)
if lookDir.Magnitude > 0.001 then
lookDir = lookDir.Unit
else
lookDir = Vector3.new(0, 0, -1)
end
flyGyro.CFrame = CFrame.new(rootPart.Position, rootPart.Position + lookDir)
else
if flyVelocity then flyVelocity:Destroy(); flyVelocity = nil end
if flyGyro then flyGyro:Destroy(); flyGyro = nil end
end
end
-- ==================== CHỨC NĂNG ESP ====================
local espHighlights = {}
local function toggleESP()
espEnabled = not espEnabled
if espEnabled then
print("🟢 BẬT ESP (tất cả)")
else
for _, highlight in pairs(espHighlights) do
if highlight and highlight.Parent then highlight:Destroy() end
end
espHighlights = {}
print("🔴 TẮT ESP (tất cả)")
end
if gui then updateGUI() end
end
local function updateESP()
if not espEnabled then return end
local currentPlayers = game.Players:GetPlayers()
local targets = {}
for _, otherPlayer in ipairs(currentPlayers) do
if otherPlayer ~= player then
local otherChar = otherPlayer.Character
if otherChar and otherChar:FindFirstChild("HumanoidRootPart") then
table.insert(targets, otherChar)
end
end
end
for char, highlight in pairs(espHighlights) do
if not char or not char.Parent then
if highlight then highlight:Destroy() end
espHighlights[char] = nil
end
end
for _, char in ipairs(targets) do
if not espHighlights[char] then
local highlight = Instance.new("Highlight")
highlight.Parent = char
highlight.FillColor = Color3.new(1, 0, 0)
highlight.OutlineColor = Color3.new(1, 1, 1)
highlight.FillTransparency = 0.5
highlight.OutlineTransparency = 0
espHighlights[char] = highlight
end
end
end
-- ==================== CHỨC NĂNG SPEED ====================
local function toggleSpeed()
speedEnabled = not speedEnabled
getCharacter()
if humanoid then
if speedEnabled then
humanoid.WalkSpeed = 60
print("🟢 BẬT SPEED (60)")
else
humanoid.WalkSpeed = baseWalkSpeed
print("🔴 TẮT SPEED (" .. baseWalkSpeed .. ")")
end
end
if gui then updateGUI() end
end
-- ==================== WALLBANG ====================
local function toggleWallbang()
wallbangEnabled = not wallbangEnabled
if wallbangEnabled then
for _, obj in ipairs(workspace:GetDescendants()) do
if obj:IsA("BasePart") then
local name = obj.Name:lower()
if name:find("bullet") or name:find("projectile") or name:find("shell") or name:find("shot") then
obj.CanCollide = false
end
end
end
wallbangConnection = workspace.DescendantAdded:Connect(function(child)
if child:IsA("BasePart") then
local name = child.Name:lower()
if name:find("bullet") or name:find("projectile") or name:find("shell") or name:find("shot") then
child.CanCollide = false
end
end
end)
else
if wallbangConnection then wallbangConnection:Disconnect(); wallbangConnection = nil end
end
if gui then updateGUI() end
end
-- ==================== AIM BOT ====================
local function toggleAimBot()
aimBotEnabled = not aimBotEnabled
if aimBotEnabled then
print("🟢 BẬT AIM BOT (ESP kẻ địch tự động bật)")
else
for _, highlight in pairs(aimBotHighlights) do
if highlight and highlight.Parent then highlight:Destroy() end
end
aimBotHighlights = {}
print("🔴 TẮT AIM BOT (đã xóa ESP kẻ địch)")
end
if gui then updateGUI() end
end
local function updateAimBotESP()
if not aimBotEnabled then return end
local currentPlayers = game.Players:GetPlayers()
local myTeam = player.Team
local targets = {}
for _, otherPlayer in ipairs(currentPlayers) do
if otherPlayer ~= player then
if myTeam and otherPlayer.Team == myTeam then continue end
local otherChar = otherPlayer.Character
if otherChar and otherChar:FindFirstChild("HumanoidRootPart") then
table.insert(targets, otherChar)
end
end
end
for char, highlight in pairs(aimBotHighlights) do
if not char or not char.Parent then
if highlight then highlight:Destroy() end
aimBotHighlights[char] = nil
end
end
for _, char in ipairs(targets) do
if not aimBotHighlights[char] then
local highlight = Instance.new("Highlight")
highlight.Parent = char
highlight.FillColor = Color3.new(1, 0, 0)
highlight.OutlineColor = Color3.new(1, 0, 0)
highlight.FillTransparency = 0.3
highlight.OutlineTransparency = 0
aimBotHighlights[char] = highlight
end
end
end
local function getTargetPart(char)
return char:FindFirstChild("Head") or char:FindFirstChild("head") or char:FindFirstChild("HumanoidRootPart")
end
local function updateAimBot()
if not aimBotEnabled then return end
if not getCharacter() or not rootPart then return end
updateAimBotESP()
local myPosition = rootPart.Position
local myTeam = player.Team
local target = nil
local minDist = aimDistance
for _, otherPlayer in ipairs(game.Players:GetPlayers()) do
if otherPlayer ~= player then
if myTeam and otherPlayer.Team == myTeam then continue end
local otherChar = otherPlayer.Character
if otherChar then
local aimPart = getTargetPart(otherChar)
local humanoidOther = otherChar:FindFirstChild("Humanoid")
if aimPart and aimPart.Parent and humanoidOther and humanoidOther.Health > 0 then
local dist = (aimPart.Position - myPosition).Magnitude
if dist < minDist then
local origin = camera.CFrame.Position
local direction = (aimPart.Position - origin).Unit
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
raycastParams.FilterDescendantsInstances = {character, camera}
local hit = workspace:Raycast(origin, direction * dist, raycastParams)
if not hit or hit.Instance:IsDescendantOf(otherChar) then
target = otherPlayer
minDist = dist
end
end
end
end
end
end
if target then
local otherChar = target.Character
if otherChar then
local aimPart = getTargetPart(otherChar)
if aimPart and aimPart.Parent then
local targetPos = aimPart.Position
local lookAt = targetPos - camera.CFrame.Position
if lookAt.Magnitude > 0.1 then
camera.CFrame = CFrame.new(camera.CFrame.Position, targetPos)
-- Đồng bộ góc quay Freecam nếu đang bật
if freecamEnabled then
local lookVector = camera.CFrame.LookVector
cameraYaw = math.atan2(lookVector.X, -lookVector.Z)
cameraPitch = math.asin(lookVector.Y)
end
end
end
end
end
end
-- ==================== NOCLIP ====================
local function toggleNoclip()
noclipEnabled = not noclipEnabled
getCharacter()
if noclipEnabled then
if character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then part.CanCollide = false end
end
end
if rootPart then
noclipBodyPosition = Instance.new("BodyPosition")
noclipBodyPosition.MaxForce = Vector3.new(0, 1e7, 0)
noclipBodyPosition.P = 10000
noclipBodyPosition.D = 100
noclipBodyPosition.Parent = rootPart
end
else
if character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then part.CanCollide = true end
end
end
if noclipBodyPosition then noclipBodyPosition:Destroy(); noclipBodyPosition = nil end
end
if gui then updateGUI() end
end
local function updateNoclip()
if not noclipEnabled then return end
if not getCharacter() or not rootPart then return end
local rayOrigin = rootPart.Position
local rayDirection = Vector3.new(0, -1, 0)
local rayLength = 100
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
raycastParams.FilterDescendantsInstances = {character}
local hit = workspace:Raycast(rayOrigin, rayDirection * rayLength, raycastParams)
local groundY = nil
if hit and hit.Normal.Y > 0.5 then
groundY = hit.Position.Y + 3
end
local targetY = rootPart.Position.Y
if groundY and rootPart.Position.Y < groundY - 0.5 then
targetY = groundY
end
if noclipBodyPosition and noclipBodyPosition.Parent then
noclipBodyPosition.Position = Vector3.new(rootPart.Position.X, targetY, rootPart.Position.Z)
end
end
-- ==================== FREECAM (CHỈ HOẠT ĐỘNG KHI GIỮ CHUỘT PHẢI) ====================
local function toggleFreecam()
freecamEnabled = not freecamEnabled
if freecamEnabled then
-- Lưu góc quay hiện tại từ camera
local lookVector = camera.CFrame.LookVector
cameraYaw = math.atan2(lookVector.X, -lookVector.Z)
cameraPitch = math.asin(lookVector.Y)
camera.CameraType = Enum.CameraType.Scriptable
-- Không khóa chuột mặc định, chỉ khóa khi giữ chuột phải
userInput.MouseBehavior = Enum.MouseBehavior.Default
userInput.MouseIconEnabled = true
rightMouseHeld = false
mouseLocked = false
print("🟢 BẬT FREECAM (giữ chuột phải để di chuyển)")
else
camera.CameraType = Enum.CameraType.Custom
userInput.MouseBehavior = Enum.MouseBehavior.Default
userInput.MouseIconEnabled = true
rightMouseHeld = false
mouseLocked = false
print("🔴 TẮT FREECAM")
end
if gui then updateGUI() end
end
local function updateFreecam()
if not freecamEnabled then return end
if camera.CameraType ~= Enum.CameraType.Scriptable then
camera.CameraType = Enum.CameraType.Scriptable
end
-- Kiểm tra trạng thái chuột phải
local isRightMouseDown = userInput:IsMouseButtonPressed(Enum.UserInputType.MouseButton2)
-- Khi giữ chuột phải: khóa chuột và cho phép điều khiển
if isRightMouseDown then
if not mouseLocked then
userInput.MouseBehavior = Enum.MouseBehavior.LockCenter
userInput.MouseIconEnabled = false
mouseLocked = true
end
-- Xoay camera bằng chuột
local delta = userInput:GetMouseDelta()
cameraYaw = cameraYaw - delta.X * freecamSensitivity * 0.01
cameraPitch = math.clamp(cameraPitch - delta.Y * freecamSensitivity * 0.01, -math.pi/2, math.pi/2)
local rotation = CFrame.Angles(0, cameraYaw, 0) * CFrame.Angles(cameraPitch, 0, 0)
local lookVector = rotation.LookVector
local rightVector = rotation.RightVector
local upVector = Vector3.new(0, 1, 0)
-- Di chuyển bằng phím (chỉ khi đang giữ chuột phải)
local moveDir = Vector3.new(0, 0, 0)
if userInput:IsKeyDown(Enum.KeyCode.W) then moveDir = moveDir + lookVector end
if userInput:IsKeyDown(Enum.KeyCode.S) then moveDir = moveDir - lookVector end
if userInput:IsKeyDown(Enum.KeyCode.A) then moveDir = moveDir - rightVector end
if userInput:IsKeyDown(Enum.KeyCode.D) then moveDir = moveDir + rightVector end
if userInput:IsKeyDown(Enum.KeyCode.Space) then moveDir = moveDir + upVector end
if userInput:IsKeyDown(Enum.KeyCode.LeftShift) then moveDir = moveDir - upVector end
if moveDir.Magnitude > 0 then
moveDir = moveDir.Unit * freecamSpeed
end
local newPos = camera.CFrame.Position + moveDir
camera.CFrame = CFrame.new(newPos, newPos + lookVector)
else
-- Khi nhả chuột phải: trả lại con trỏ
if mouseLocked then
userInput.MouseBehavior = Enum.MouseBehavior.Default
userInput.MouseIconEnabled = true
mouseLocked = false
end
-- Giữ nguyên camera, không di chuyển
end
end
-- ==================== ĐIỀU CHỈNH TỐC ĐỘ ====================
local function adjustFlySpeed(delta)
flySpeed = math.clamp(flySpeed + delta, 5, 200)
if gui then updateSpeedLabels() end
end
local function adjustWalkSpeed(delta)
baseWalkSpeed = math.clamp(baseWalkSpeed + delta, 2, 100)
if not speedEnabled and humanoid then humanoid.WalkSpeed = baseWalkSpeed end
if gui then updateSpeedLabels() end
end
local function adjustFreecamSpeed(delta)
freecamSpeed = math.clamp(freecamSpeed + delta, 5, 200)
if gui then updateSpeedLabels() end
end
-- ==================== TẠO GUI (GÓC TRÁI, CÓ THỂ KÉO THẢ) ====================
local function createGUI()
for _, child in ipairs(coreGui:GetChildren()) do
if child.Name == "ZeroGhost_GUI" then child:Destroy() end
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ZeroGhost_GUI"
screenGui.Parent = coreGui
mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 240, 0, 750)
mainFrame.Position = UDim2.new(0, 10, 0, 10)
mainFrame.BackgroundColor3 = Color3.new(0.05, 0.05, 0.05)
mainFrame.BackgroundTransparency = 0.15
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui
addCorner(mainFrame, 10)
local title = Instance.new("TextButton")
title.Size = UDim2.new(1, 0, 0, 35)
title.Position = UDim2.new(0, 0, 0, 0)
title.Text = "ZeroGhost"
title.TextColor3 = Color3.new(1, 1, 1)
title.BackgroundColor3 = Color3.new(0.1, 0.1, 0.1)
title.BackgroundTransparency = 0.5
title.Font = Enum.Font.SourceSansBold
title.TextSize = 20
title.TextStrokeColor3 = Color3.new(0, 0, 0)
title.TextStrokeTransparency = 0.5
title.Parent = mainFrame
addCorner(title, 10)
title.AutoButtonColor = false
local dragInput
title.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
title.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
userInput.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(
startPos.X.Scale, startPos.X.Offset + delta.X,
startPos.Y.Scale, startPos.Y.Offset + delta.Y
)
end
end)
local function createButton(text, yPos, color, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.9, 0, 0, 30)
btn.Position = UDim2.new(0.05, 0, 0, yPos)
btn.Text = text
btn.BackgroundColor3 = color or Color3.new(0.25, 0.25, 0.25)
btn.TextColor3 = Color3.new(1, 1, 1)
btn.BorderSizePixel = 0
btn.Font = Enum.Font.SourceSansBold
btn.TextSize = 14
btn.Parent = mainFrame
addCorner(btn, 6)
btn.MouseButton1Click:Connect(callback)
return btn
end
local y = 40
btnFly = createButton("Fly: OFF", y, Color3.new(0.6, 0, 0), toggleFly)
y = y + 35
btnESP = createButton("ESP: OFF", y, Color3.new(0.6, 0, 0), toggleESP)
y = y + 35
btnSpeed = createButton("Speed: OFF", y, Color3.new(0.6, 0, 0), toggleSpeed)
y = y + 35
btnWallbang = createButton("Wallbang: OFF", y, Color3.new(0.6, 0, 0), toggleWallbang)
y = y + 35
btnAimBot = createButton("Aim Bot: OFF", y, Color3.new(0.6, 0, 0), toggleAimBot)
y = y + 35
btnNoclip = createButton("NoClip: OFF", y, Color3.new(0.6, 0, 0), toggleNoclip)
y = y + 35
btnFreecam = createButton("Freecam: OFF", y, Color3.new(0.6, 0, 0), toggleFreecam)
y = y + 40
local lblFly = Instance.new("TextLabel")
lblFly.Size = UDim2.new(0.9, 0, 0, 20)
lblFly.Position = UDim2.new(0.05, 0, 0, y)
lblFly.Text = "✈ Fly Speed: " .. flySpeed
lblFly.TextColor3 = Color3.new(0.9, 0.9, 0.9)
lblFly.BackgroundTransparency = 1
lblFly.TextXAlignment = Enum.TextXAlignment.Left
lblFly.Font = Enum.Font.SourceSans
lblFly.TextSize = 13
lblFly.Parent = mainFrame
lblFlySpeed = lblFly
y = y + 22
local btnSpeedUp = createButton("Speed Up (+5)", y, Color3.new(0.2, 0.6, 0.2), function() adjustFlySpeed(5) end)
y = y + 30
local btnSpeedDown = createButton("Speed Down (-5)", y, Color3.new(0.6, 0.2, 0.2), function() adjustFlySpeed(-5) end)
y = y + 38
local lblWalk = Instance.new("TextLabel")
lblWalk.Size = UDim2.new(0.9, 0, 0, 20)
lblWalk.Position = UDim2.new(0.05, 0, 0, y)
lblWalk.Text = "🚶 Walk Speed: " .. baseWalkSpeed
lblWalk.TextColor3 = Color3.new(0.9, 0.9, 0.9)
lblWalk.BackgroundTransparency = 1
lblWalk.TextXAlignment = Enum.TextXAlignment.Left
lblWalk.Font = Enum.Font.SourceSans
lblWalk.TextSize = 13
lblWalk.Parent = mainFrame
lblWalkSpeed = lblWalk
y = y + 22
local btnWalkUp = createButton("Walk Up (+2)", y, Color3.new(0.2, 0.6, 0.2), function() adjustWalkSpeed(2) end)
y = y + 30
local btnWalkDown = createButton("Walk Down (-2)", y, Color3.new(0.6, 0.2, 0.2), function() adjustWalkSpeed(-2) end)
y = y + 38
-- Freecam Speed
local lblFreecam = Instance.new("TextLabel")
lblFreecam.Size = UDim2.new(0.9, 0, 0, 20)
lblFreecam.Position = UDim2.new(0.05, 0, 0, y)
lblFreecam.Text = "🎥 Freecam Speed: " .. freecamSpeed
lblFreecam.TextColor3 = Color3.new(0.9, 0.9, 0.9)
lblFreecam.BackgroundTransparency = 1
lblFreecam.TextXAlignment = Enum.TextXAlignment.Left
lblFreecam.Font = Enum.Font.SourceSans
lblFreecam.TextSize = 13
lblFreecam.Parent = mainFrame
lblFreecamSpeed = lblFreecam
y = y + 22
local btnFreecamUp = createButton("Freecam Up (+5)", y, Color3.new(0.2, 0.6, 0.2), function() adjustFreecamSpeed(5) end)
y = y + 30
local btnFreecamDown = createButton("Freecam Down (-5)", y, Color3.new(0.6, 0.2, 0.2), function() adjustFreecamSpeed(-5) end)
y = y + 40
local sep = Instance.new("Frame")
sep.Size = UDim2.new(0.9, 0, 0, 2)
sep.Position = UDim2.new(0.05, 0, 0, y)
sep.BackgroundColor3 = Color3.new(0.4, 0.4, 0.4)
sep.BorderSizePixel = 0
sep.Parent = mainFrame
y = y + 8
local tpTitle = Instance.new("TextLabel")
tpTitle.Size = UDim2.new(0.9, 0, 0, 20)
tpTitle.Position = UDim2.new(0.05, 0, 0, y)
tpTitle.Text = "🗺️ Dịch chuyển (Save/TP/Del)"
tpTitle.TextColor3 = Color3.new(1, 1, 1)
tpTitle.BackgroundTransparency = 1
tpTitle.Font = Enum.Font.SourceSansBold
tpTitle.TextSize = 13
tpTitle.Parent = mainFrame
y = y + 22
for i = 1, 3 do
local slotFrame = Instance.new("Frame")
slotFrame.Size = UDim2.new(0.9, 0, 0, 32)
slotFrame.Position = UDim2.new(0.05, 0, 0, y)
slotFrame.BackgroundColor3 = Color3.new(0.15, 0.15, 0.15)
slotFrame.BackgroundTransparency = 0.1
slotFrame.BorderSizePixel = 0
slotFrame.Parent = mainFrame
addCorner(slotFrame, 6)
local slotLabel = Instance.new("TextLabel")
slotLabel.Size = UDim2.new(0, 40, 1, 0)
slotLabel.Position = UDim2.new(0, 5, 0, 0)
slotLabel.Text = "Slot "..i
slotLabel.TextColor3 = Color3.new(1, 1, 1)
slotLabel.BackgroundTransparency = 1
slotLabel.TextXAlignment = Enum.TextXAlignment.Left
slotLabel.Font = Enum.Font.SourceSansBold
slotLabel.TextSize = 12
slotLabel.Parent = slotFrame
local coordLabel = Instance.new("TextLabel")
coordLabel.Size = UDim2.new(1, -125, 1, 0)
coordLabel.Position = UDim2.new(0, 45, 0, 0)
coordLabel.Text = "(trống)"
coordLabel.TextColor3 = Color3.new(0.6, 0.6, 0.6)
coordLabel.BackgroundTransparency = 1
coordLabel.TextXAlignment = Enum.TextXAlignment.Center
coordLabel.Font = Enum.Font.SourceSans
coordLabel.TextSize = 12
coordLabel.Parent = slotFrame
local saveBtn = Instance.new("TextButton")
saveBtn.Size = UDim2.new(0, 35, 1, -2)
saveBtn.Position = UDim2.new(1, -115, 0, 1)
saveBtn.Text = "💾"
saveBtn.BackgroundColor3 = Color3.new(0.2, 0.6, 0.2)
saveBtn.TextColor3 = Color3.new(1, 1, 1)
saveBtn.Font = Enum.Font.SourceSansBold
saveBtn.TextSize = 14
saveBtn.BorderSizePixel = 0
saveBtn.Parent = slotFrame
addCorner(saveBtn, 4)
local tpBtn = Instance.new("TextButton")
tpBtn.Size = UDim2.new(0, 35, 1, -2)
tpBtn.Position = UDim2.new(1, -75, 0, 1)
tpBtn.Text = "🚀"
tpBtn.BackgroundColor3 = Color3.new(0.6, 0.3, 0.1)
tpBtn.TextColor3 = Color3.new(1, 1, 1)
tpBtn.Font = Enum.Font.SourceSansBold
tpBtn.TextSize = 14
tpBtn.BorderSizePixel = 0
tpBtn.Parent = slotFrame
addCorner(tpBtn, 4)
local delBtn = Instance.new("TextButton")
delBtn.Size = UDim2.new(0, 30, 1, -2)
delBtn.Position = UDim2.new(1, -35, 0, 1)
delBtn.Text = "🗑️"
delBtn.BackgroundColor3 = Color3.new(0.6, 0.2, 0.2)
delBtn.TextColor3 = Color3.new(1, 1, 1)
delBtn.Font = Enum.Font.SourceSansBold
delBtn.TextSize = 14
delBtn.BorderSizePixel = 0
delBtn.Parent = slotFrame
addCorner(delBtn, 4)
saveBtn.MouseButton1Click:Connect(function()
if getCharacter() and rootPart then
savedPositions[i] = rootPart.Position
coordLabel.Text = string.format("%.0f, %.0f, %.0f", rootPart.Position.X, rootPart.Position.Y, rootPart.Position.Z)
end
end)
tpBtn.MouseButton1Click:Connect(function()
local pos = savedPositions[i]
if pos and getCharacter() and rootPart then
rootPart.CFrame = CFrame.new(pos)
end
end)
delBtn.MouseButton1Click:Connect(function()
savedPositions[i] = nil
coordLabel.Text = "(trống)"
end)
y = y + 36
end
gui = screenGui
updateGUI()
updateSpeedLabels()
end
local function createToggleButton()
for _, child in ipairs(coreGui:GetChildren()) do
if child.Name == "ToggleGUI" then child:Destroy() end
end
local toggleScreenGui = Instance.new("ScreenGui")
toggleScreenGui.Name = "ToggleGUI"
toggleScreenGui.Parent = coreGui
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0, 55, 0, 55)
toggleBtn.Position = UDim2.new(1, -65, 0, 10)
toggleBtn.Text = "😈"
toggleBtn.Font = Enum.Font.SourceSansBold
toggleBtn.TextSize = 30
toggleBtn.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
toggleBtn.BackgroundTransparency = 0.2
toggleBtn.BorderSizePixel = 0
toggleBtn.Parent = toggleScreenGui
addCorner(toggleBtn, 55)
toggleFlashBtn = toggleBtn
toggleBtn.MouseButton1Click:Connect(function()
if mainFrame then mainFrame.Visible = not mainFrame.Visible end
end)
end
local function updateFlash()
if toggleFlashBtn then
local flash = (tick() % 1) < 0.5
toggleFlashBtn.BackgroundColor3 = flash and Color3.new(1, 0, 0) or Color3.new(0.3, 0.3, 0.3)
end
end
function updateGUI()
if not gui then return end
local function setBtn(btn, enabled, name)
if btn then
btn.Text = name .. (enabled and ": ON" or ": OFF")
btn.BackgroundColor3 = enabled and Color3.new(0.2, 0.6, 0.2) or Color3.new(0.6, 0, 0)
end
end
setBtn(btnFly, flyEnabled, "Fly")
setBtn(btnESP, espEnabled, "ESP")
setBtn(btnSpeed, speedEnabled, "Speed")
setBtn(btnWallbang, wallbangEnabled, "Wallbang")
setBtn(btnAimBot, aimBotEnabled, "Aim Bot")
setBtn(btnNoclip, noclipEnabled, "NoClip")
setBtn(btnFreecam, freecamEnabled, "Freecam")
end
function updateSpeedLabels()
if lblFlySpeed then lblFlySpeed.Text = "✈ Fly Speed: " .. flySpeed end
if lblWalkSpeed then lblWalkSpeed.Text = "🚶 Walk Speed: " .. baseWalkSpeed end
if lblFreecamSpeed then lblFreecamSpeed.Text = "🎥 Freecam Speed: " .. freecamSpeed end
end
userInput.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
local key = input.KeyCode
if key == Enum.KeyCode.F then toggleFly()
elseif key == Enum.KeyCode.G then toggleESP()
elseif key == Enum.KeyCode.H then toggleSpeed()
elseif key == Enum.KeyCode.N then toggleWallbang()
elseif key == Enum.KeyCode.B then toggleAimBot()
elseif key == Enum.KeyCode.U then toggleNoclip()
elseif key == Enum.KeyCode.Y then toggleFreecam()
elseif key == Enum.KeyCode.Equals then adjustFlySpeed(5)
elseif key == Enum.KeyCode.Minus then adjustFlySpeed(-5)
elseif key == Enum.KeyCode.LeftBracket then adjustWalkSpeed(-2)
elseif key == Enum.KeyCode.RightBracket then adjustWalkSpeed(2)
end
end)
runService.RenderStepped:Connect(function()
updateFly()
updateESP()
updateAimBot()
updateNoclip()
updateFreecam()
updateFlash()
end)
player.CharacterAdded:Connect(function(newChar)
character = newChar
rootPart = newChar:FindFirstChild("HumanoidRootPart")
humanoid = newChar:FindFirstChild("Humanoid")
if speedEnabled and humanoid then humanoid.WalkSpeed = 60
elseif humanoid then humanoid.WalkSpeed = baseWalkSpeed end
if flyEnabled and humanoid then humanoid.PlatformStand = true end
if noclipEnabled then
noclipEnabled = false
toggleNoclip()
end
if aimBotEnabled then
for _, highlight in pairs(aimBotHighlights) do
if highlight and highlight.Parent then highlight:Destroy() end
end
aimBotHighlights = {}
end
if freecamEnabled then
toggleFreecam() -- Tắt nếu đang bật để tránh lỗi
end
end)
getCharacter()
createGUI()
createToggleButton()



thanks for the open source