- 📅 2026-07-03T09:44:47.500Z
- 👁️ 211 katselukertaa
- 🔓 Julkinen
-- 1. Định nghĩa các dịch vụ hệ thống cốt lõi của Roblox
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local Teams = game:GetService("Teams")
local Camera = Workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
-- 2. Khởi tạo bảng trạng thái tính năng toàn cục (Menu V2 mở rộng)
local State = {
TP_Closest = false,
TP_4Far = false,
TP_Mid = false,
Fly_Hack = false, -- Tính năng bay tự do
Unlock_Camera = false, -- Freecam di chuyển tự do
Force_ThirdPerson = false, -- Ép góc nhìn thứ 3
Speed_Hack = false,
Jump_Hack = false,
Lock_Player = false,
Lock_NPC = false,
AIM = false,
AIM_Player = false,
Aim_VatCan_S2 = false,
ESP_1 = false,
ESP_2 = false,
ESP_3 = false
}
-- 3. Cấu hình thông số mặc định cho hệ thống
local TargetHeight, LoopDistance = 0, 15
local FOV_Aim_Radius, FOV_Player_Radius, FOV_NPC_Radius = 150, 120, 120
local Aim_Smooth = 5
local Target_Speed, Target_Jump = 16, 50
local Fly_Speed = 50 -- Tốc độ bay ban đầu
local Cam_Unlock_Speed = 1 -- Tốc độ di chuyển Freecam
local ESPDrawings, ButtonsList = {}, {}
local LockedTarget = nil
local LockedTPTarget = nil
local currentOrder = 1
-- 4. Ép buộc Menu cài vào CoreGui và đặt DisplayOrder tối đa
local CoreGui = game:GetService("CoreGui")
if CoreGui:FindFirstChild("SuperMultiMenuV2") then CoreGui:FindFirstChild("SuperMultiMenuV2"):Destroy() end
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "SuperMultiMenuV2"
ScreenGui.ResetOnSpawn = false
ScreenGui.DisplayOrder = 999999
ScreenGui.Parent = CoreGui
-- Khung hiển thị chính (Đã tăng chiều cao lên 300 để chứa thêm các ô Input mới)
local MainFrame = Instance.new("Frame", ScreenGui)
MainFrame.Name = "MainFrame"; MainFrame.Size = UDim2.new(0, 180, 0, 300); MainFrame.Position = UDim2.new(0.05, 0, 0.2, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20); MainFrame.BackgroundTransparency = 0.15; MainFrame.ClipsDescendants = true
Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 8)
local ScrollFrame = Instance.new("ScrollingFrame", MainFrame)
ScrollFrame.Name = "ScrollFrame"; ScrollFrame.Size = UDim2.new(1, 0, 1, -35); ScrollFrame.Position = UDim2.new(0, 0, 0, 35)
ScrollFrame.BackgroundTransparency = 1; ScrollFrame.ScrollBarThickness = 3; ScrollFrame.ScrollBarImageColor3 = Color3.fromRGB(120, 120, 120)
ScrollFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y; ScrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
local ListLayout = Instance.new("UIListLayout", ScrollFrame)
ListLayout.SortOrder = Enum.SortOrder.LayoutOrder; ListLayout.Padding = UDim.new(0, 5)
local ListPadding = Instance.new("UIPadding", ScrollFrame)
ListPadding.PaddingTop = UDim.new(0, 5); ListPadding.PaddingLeft = UDim.new(0, 8); ListPadding.PaddingRight = UDim.new(0, 8)
local MenuTitle = Instance.new("TextLabel", MainFrame)
MenuTitle.Size = UDim2.new(0, 130, 0, 30); MenuTitle.Position = UDim2.new(0, 10, 0, 2)
MenuTitle.Text = "SUPER MULTI MENU V2"; MenuTitle.TextColor3 = Color3.new(1, 1, 1); MenuTitle.Font = Enum.Font.SourceSansBold; MenuTitle.TextSize = 11; MenuTitle.BackgroundTransparency = 1
local MinimizeBtn = Instance.new("TextButton", MainFrame)
MinimizeBtn.Size = UDim2.new(0, 25, 0, 25); MinimizeBtn.Position = UDim2.new(1, -30, 0, 2); MinimizeBtn.BackgroundTransparency = 1
MinimizeBtn.Text = "[-]"; MinimizeBtn.TextColor3 = Color3.fromRGB(255, 50, 50); MinimizeBtn.Font = Enum.Font.SourceSansBold; MinimizeBtn.TextSize = 14
local MaximizeBtn = Instance.new("TextButton", ScreenGui)
MaximizeBtn.Size = UDim2.new(0, 40, 0, 40); MaximizeBtn.Position = MainFrame.Position; MaximizeBtn.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
MaximizeBtn.Text = "[+]"; MaximizeBtn.TextColor3 = Color3.fromRGB(50, 255, 50); MaximizeBtn.Font = Enum.Font.SourceSansBold; MaximizeBtn.TextSize = 16; MaximizeBtn.Visible = false
Instance.new("UICorner", MaximizeBtn).CornerRadius = UDim.new(0, 20)
MinimizeBtn.MouseButton1Click:Connect(function() MaximizeBtn.Position = MainFrame.Position; MainFrame.Visible = false; MaximizeBtn.Visible = true end)
MaximizeBtn.MouseButton1Click:Connect(function() MainFrame.Position = MaximizeBtn.Position; MaximizeBtn.Visible = false; MainFrame.Visible = true end)
-- Logic kéo thả Menu bằng chuột hoặc cảm ứng tay
local function SetMenuDragLogic()
local dragging, dragStart, startPos; local holdTimer = 0
MenuTitle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
holdTimer = tick()
task.delay(1.0, function()
if holdTimer ~= 0 and (tick() - holdTimer >= 1.0) then
dragging = true; dragStart = input.Position; startPos = MainFrame.Position
MenuTitle.Text = "ĐANG DI CHUYỂN..."; MenuTitle.TextColor3 = Color3.fromRGB(255, 255, 0)
end
end)
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) 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)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false; holdTimer = 0; MenuTitle.Text = "SUPER MULTI MENU V2"; MenuTitle.TextColor3 = Color3.fromRGB(255, 255, 255)
end
end)
end
SetMenuDragLogic()
-- Hàm mẫu tự động tạo nút bấm tương tác
local function AddMenuButton(name, displayName)
local btn = Instance.new("TextButton", ScrollFrame)
btn.Size = UDim2.new(1, 0, 0, 24); btn.LayoutOrder = currentOrder; currentOrder = currentOrder + 1
btn.BackgroundColor3 = Color3.fromRGB(35, 35, 35); btn.Text = displayName .. (name == "RESET" and "" or ": OFF")
btn.TextColor3 = Color3.new(1, 1, 1); btn.Font = Enum.Font.SourceSansBold; btn.TextSize = 10
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
if name ~= "RESET" then ButtonsList[name] = { Instance = btn, DisplayName = displayName } end
btn.MouseButton1Click:Connect(function()
if name == "RESET" then
State.ESP_1 = false; State.ESP_2 = false; State.ESP_3 = false
for pName, drawGroup in pairs(ESPDrawings) do pcall(function() drawGroup.Box:Remove(); drawGroup.Line:Remove(); drawGroup.Text:Remove() end) end
table.clear(ESPDrawings)
else
State[name] = not State[name]
btn.Text = displayName .. (State[name] and ": ON" or ": OFF")
btn.BackgroundColor3 = State[name] and Color3.fromRGB(0, 80, 0) or Color3.fromRGB(35, 35, 35)
end
end)
end
-- Hàm khởi tạo Slider điều chỉnh thông số
local function CreateSlider(titleText, minVal, maxVal, defaultVal, callback)
local sliderFrame = Instance.new("Frame", ScrollFrame)
sliderFrame.Size = UDim2.new(1, 0, 0, 28); sliderFrame.BackgroundTransparency = 1; sliderFrame.LayoutOrder = currentOrder; currentOrder = currentOrder + 1
local label = Instance.new("TextLabel", sliderFrame)
label.Size = UDim2.new(1, 0, 0, 11); label.Text = titleText .. ": " .. tostring(defaultVal); label.TextColor3 = Color3.new(1, 1, 1); label.Font = Enum.Font.SourceSansBold; label.TextSize = 9; label.BackgroundTransparency = 1
local bar = Instance.new("Frame", sliderFrame)
bar.Size = UDim2.new(1, 0, 0, 3); bar.Position = UDim2.new(0, 0, 0, 14); bar.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
local pin = Instance.new("TextButton", bar)
pin.Size = UDim2.new(0, 8, 0, 8); pin.Position = UDim2.new((defaultVal - minVal) / (maxVal - minVal), -4, 0, -3); pin.BackgroundColor3 = Color3.fromRGB(200, 200, 200); pin.Text = ""
Instance.new("UICorner", pin).CornerRadius = UDim.new(0, 4)
local dragging = false
pin.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true end end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local relativeX = math.clamp((input.Position.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X, 0, 1)
pin.Position = UDim2.new(relativeX, -4, 0, -3)
local currentVal = math.floor(minVal + (relativeX * (maxVal - minVal)))
label.Text = titleText .. ": " .. tostring(currentVal); callback(currentVal)
end
end)
UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end)
end
-- ĐĂNG KÝ KHU VỰC TÍNH NĂNG BAY (FLY HACK)
AddMenuButton("Fly_Hack", "✈️ KÍCH HOẠT BAY (FLY)")
local FlySpeedInput = Instance.new("TextBox", ScrollFrame)
FlySpeedInput.Size = UDim2.new(1, 0, 0, 24); FlySpeedInput.LayoutOrder = currentOrder; currentOrder = currentOrder + 1
FlySpeedInput.BackgroundColor3 = Color3.fromRGB(45, 45, 45); FlySpeedInput.Text = "Tốc độ bay: " .. tostring(Fly_Speed)
FlySpeedInput.TextColor3 = Color3.fromRGB(0, 255, 255); FlySpeedInput.Font = Enum.Font.SourceSansBold; FlySpeedInput.TextSize = 10
Instance.new("UICorner", FlySpeedInput).CornerRadius = UDim.new(0, 4)
FlySpeedInput.FocusLost:Connect(function()
local num = tonumber(FlySpeedInput.Text:match("%d+")) or tonumber(FlySpeedInput.Text)
if num then Fly_Speed = math.clamp(num, 1, 1000) end
FlySpeedInput.Text = "Tốc độ bay: " .. tostring(Fly_Speed)
end)
-- ĐĂNG KÝ KHU VỰC CAMERA TỰ DO & MỞ KHÓA GÓC NHÌN THỨ 3
AddMenuButton("Unlock_Camera", "🎥 UNLOCK CAMERA (FREECAM)")
local CamSpeedInput = Instance.new("TextBox", ScrollFrame)
CamSpeedInput.Size = UDim2.new(1, 0, 0, 24); CamSpeedInput.LayoutOrder = currentOrder; currentOrder = currentOrder + 1
CamSpeedInput.BackgroundColor3 = Color3.fromRGB(45, 45, 45); CamSpeedInput.Text = "Tốc độ Cam: " .. tostring(Cam_Unlock_Speed)
CamSpeedInput.TextColor3 = Color3.fromRGB(255, 255, 0); CamSpeedInput.Font = Enum.Font.SourceSansBold; CamSpeedInput.TextSize = 10
Instance.new("UICorner", CamSpeedInput).CornerRadius = UDim.new(0, 4)
CamSpeedInput.FocusLost:Connect(function()
local num = tonumber(CamSpeedInput.Text:match("%d+")) or tonumber(CamSpeedInput.Text)
if num then Cam_Unlock_Speed = math.clamp(num, 0.1, 10) end
CamSpeedInput.Text = "Tốc độ Cam: " .. tostring(Cam_Unlock_Speed)
end)
AddMenuButton("Force_ThirdPerson", "👁️ FORCE THIRD PERSON")
-- ĐĂNG KÝ CÁC TÍNH NĂNG GỐC CÒN LẠI CỦA MENU V2
AddMenuButton("TP_Closest", "TP SÁT SAU LƯNG")
AddMenuButton("TP_4Far", "TP 4 FAR (S1)")
AddMenuButton("TP_Mid", "TP MID (S1)")
AddMenuButton("AIM_Player", "AIM XUYÊN VẬT CẢN (S1)")
AddMenuButton("Aim_VatCan_S2", "AIM CHẶN VẬT CẢN (S2)")
AddMenuButton("AIM", "AIM ASSIST MƯỢT (S2)")
AddMenuButton("Speed_Hack", "CHẠY NHANH (SPEED)")
CreateSlider("TỐC ĐỘ RUN", 16, 500, Target_Speed, function(v) Target_Speed = v end)
AddMenuButton("Jump_Hack", "NHẢY CAO (JP)")
CreateSlider("ĐỘ CAO JUMP", 50, 1000, Target_Jump, function(v) Target_Jump = v end)
AddMenuButton("Lock_Player", "LOCK PLAYER")
AddMenuButton("Lock_NPC", "LOCK NPC")
AddMenuButton("ESP_3", "ESP PLAYER GỐC (S1)")
AddMenuButton("ESP_1", "ESP BOX CỐ ĐỊNH (S2)")
AddMenuButton("ESP_2", "ESP DYNAMIC CO GIÃN (S2)")
AddMenuButton("RESET", "CLEAR 3 ESP (GIỮ MOD)")
-- ---------------- LƯU TRỮ VÀ XỬ LÝ LỰC BAY (FLY HACK) ----------------
local FlyBV, FlyBG, FlyConnection = nil, nil, nil
local function StartFlying()
local Ch = LocalPlayer.Character; if not Ch then return end
local Root = Ch:FindFirstChild("HumanoidRootPart")
local Hum = Ch:FindFirstChild("Humanoid"); if not Root or not Hum then return end
FlyBG = Instance.new("BodyGyro")
FlyBG.Name = "Fly_Gyro"; FlyBG.P = 9e4; FlyBG.MaxTorque = Vector3.new(9e9, 9e9, 9e9)
FlyBG.CFrame = Root.CFrame; FlyBG.Parent = Root
FlyBV = Instance.new("BodyVelocity")
FlyBV.Name = "Fly_Velocity"; FlyBV.MaxForce = Vector3.new(9e9, 9e9, 9e9)
FlyBV.Velocity = Vector3.new(0, 0, 0); FlyBV.Parent = Root
Hum.PlatformStand = true
FlyConnection = RunService.Heartbeat:Connect(function()
if not State.Fly_Hack or not Root or not Root.Parent then return end
FlyBG.CFrame = Camera.CFrame
local moveDirection = Hum.MoveDirection
if moveDirection.Magnitude > 0 then
local camCFrame = Camera.CFrame
local lookVector = camCFrame.LookVector
local rightVector = camCFrame.RightVector
local customVelocity = Vector3.new(0, 0, 0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then customVelocity = customVelocity + lookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then customVelocity = customVelocity - lookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then customVelocity = customVelocity - rightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then customVelocity = customVelocity + rightVector end
if customVelocity.Magnitude > 0 then FlyBV.Velocity = customVelocity.Unit * Fly_Speed else FlyBV.Velocity = Vector3.new(0, 0, 0) end
else FlyBV.Velocity = Vector3.new(0, 0, 0) end
end)
end
local function StopFlying()
if FlyConnection then FlyConnection:Disconnect(); FlyConnection = nil end
if FlyBV then pcall(function() FlyBV:Destroy() end) FlyBV = nil end
if FlyBG then pcall(function() FlyBG:Destroy() end) FlyBG = nil end
local Ch = LocalPlayer.Character
if Ch and Ch:FindFirstChild("Humanoid") then Ch.Humanoid.PlatformStand = false end
end
-- ---------------- XỬ LÝ CAMERA TỰ DO (UNLOCK CAMERA) ----------------
local FreecamConnection = nil
local function StartFreecam()
Camera.CameraType = Enum.CameraType.Scriptable
FreecamConnection = RunService.RenderStepped:Connect(function()
if not State.Unlock_Camera then return end
local camCFrame = Camera.CFrame
local moveVector = Vector3.new(0, 0, 0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then moveVector = moveVector + camCFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then moveVector = moveVector - camCFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveVector = moveVector - camCFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveVector = moveVector + camCFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.E) then moveVector = moveVector + Vector3.new(0, 1, 0) end
if UserInputService:IsKeyDown(Enum.KeyCode.Q) then moveVector = moveVector - Vector3.new(0, 1, 0) end
if moveVector.Magnitude > 0 then Camera.CFrame = camCFrame + (moveVector.Unit * Cam_Unlock_Speed) end
end)
end
local function StopFreecam()
if FreecamConnection then FreecamConnection:Disconnect(); FreecamConnection = nil end
Camera.CameraType = Enum.CameraType.Custom
local Ch = LocalPlayer.Character
if Ch and Ch:FindFirstChild("Humanoid") then Camera.CameraSubject = Ch.Humanoid end
end
-- -------------- ÉP MỞ GÓC NHÌN THỨ 3 (FORCE THIRD PERSON) --------------
local ThirdPersonConnection = nil
local function StartForceThirdPerson()
LocalPlayer.CameraMaxZoomDistance = 100; LocalPlayer.CameraMinZoomDistance = 0.5
ThirdPersonConnection = RunService.RenderStepped:Connect(function()
if not State.Force_ThirdPerson then return end
LocalPlayer.CameraMode = Enum.CameraMode.Classic
local Ch = LocalPlayer.Character
if Ch then
for _, part in pairs(Ch:GetChildren()) do
if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then part.LocalTransparencyModifier = 0 end
end
end
end)
end
local function StopForceThirdPerson()
if ThirdPersonConnection then ThirdPersonConnection:Disconnect(); ThirdPersonConnection = nil end
LocalPlayer.CameraMaxZoomDistance = 12.5; LocalPlayer.CameraMode = Enum.CameraMode.Classic
end
-- Bộ điều khiển Daemon quản lý kích hoạt
task.spawn(function()
while true do task.wait(0.1)
if State.Fly_Hack then if not FlyConnection then StartFlying() end else if FlyConnection then StopFlying() end end
if State.Unlock_Camera then if not FreecamConnection then StartFreecam() end else if FreecamConnection then StopFreecam() end end
if State.Force_ThirdPerson then if not ThirdPersonConnection then StartForceThirdPerson() end else if ThirdPersonConnection then StopForceThirdPerson() end end
end
end)
-- Vòng lặp chính xử lý Speed, Jump và Hệ thống Teleport dịch chuyển theo mục tiêu
RunService.Heartbeat:Connect(function()
local myChar = LocalPlayer.Character; if not myChar or not myChar:FindFirstChild("HumanoidRootPart") or not myChar:FindFirstChild("Humanoid") then return end
local rootPart = myChar.HumanoidRootPart
local humanoid = myChar.Humanoid
-- Khóa thông số Speed/Jump thường trực khi không bật chế độ bay Fly
if State.Speed_Hack and not State.Fly_Hack then humanoid.WalkSpeed = Target_Speed end
if State.Jump_Hack then humanoid.UseJumpPower = true; humanoid.JumpPower = Target_Jump end
-- Bộ lọc xử lý tọa độ dịch chuyển áp sát mục tiêu (TP Logic gốc của Menu V2)
local isTPEnabled = (State.TP_Closest or State.TP_4Far or State.TP_Mid)
if not isTPEnabled then LockedTPTarget = nil return end
if not LockedTPTarget or not LockedTPTarget.Character or not LockedTPTarget.Character:FindFirstChild("HumanoidRootPart") or not LockedTPTarget.Character:FindFirstChild("Humanoid") or LockedTPTarget.Character.Humanoid.Health <= 0 then
local closest, shortestDist = nil, math.huge
for _, p in pairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then
local dist = (Camera.CFrame.Position - p.Character.HumanoidRootPart.Position).Magnitude
if dist < shortestDist then closest = p; shortestDist = dist end
end
end
LockedTPTarget = closest
end
if LockedTPTarget and LockedTPTarget.Character and LockedTPTarget.Character:FindFirstChild("HumanoidRootPart") then
local targetRoot = LockedTPTarget.Character.HumanoidRootPart
if State.TP_Closest then
rootPart.CFrame = CFrame.new(targetRoot.Position - (targetRoot.CFrame.LookVector * 3.3) + Vector3.new(0, TargetHeight, 0), targetRoot.Position)
elseif State.TP_4Far then
rootPart.CFrame = CFrame.new(targetRoot.Position + (targetRoot.CFrame.LookVector * -LoopDistance) + Vector3.new(0, TargetHeight, 0), targetRoot.Position)
elseif State.TP_Mid then
rootPart.CFrame = targetRoot.CFrame + Vector3.new(0, TargetHeight, 0)
end
end
end)