local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local VirtualInputManager = game:GetService("VirtualInputManager") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera -------------------------------------------------------------------- -- CẤU HÌNH & TRẠNG THÁI -------------------------------------------------------------------- local Settings = { -- Lock Settings LockEnabled = false, LockKey = Enum.KeyCode.Q, -- Mặc định Q TargetPart = "HumanoidRootPart", Prediction = 0.135, Smoothness = 0.085, AutoSelect = true, -- Tech Keybinds (Mặc định - Có thể đổi trong Menu) KibaKey = Enum.KeyCode.V, SupaKey = Enum.KeyCode.B, LethalKey = Enum.KeyCode.N, -- Macro Timing DashSpeed = 0.15 } local CurrentTarget = nil local IsLocked = false local IsBinding = nil -- Biến dùng để xác định đang đổi phím nào -------------------------------------------------------------------- -- HÀM HỖ TRỢ MACRO (TECH) -------------------------------------------------------------------- local function PressKey(key, holdTime) VirtualInputManager:SendKeyEvent(true, key, false, game) task.wait(holdTime or 0.05) VirtualInputManager:SendKeyEvent(false, key, false, game) end -- 1. KIBA TECH (Xoay lưng + Dash biến ảo) local function DoKibaTech() -- Logic: Quay lưng 180 độ -> Dash -> Quay lại local currentCF = LocalPlayer.Character.HumanoidRootPart.CFrame LocalPlayer.Character.HumanoidRootPart.CFrame = currentCF * CFrame.Angles(0, math.rad(180), 0) PressKey(Enum.KeyCode.Q, 0.1) -- Dash task.wait(0.1) LocalPlayer.Character.HumanoidRootPart.CFrame = currentCF -- Quay lại hướng cũ end -- 2. SUPA TECH (Dash Cancel Animation) local function DoSupaTech() -- Logic: Dash + Block nhanh để cancel đà khựng PressKey(Enum.KeyCode.Q, 0.05) task.wait(0.02) PressKey(Enum.KeyCode.F, 0.05) -- Block cancel end -- 3. LETHAL DASH (Dash sườn cực nhanh) local function DoLethalDash() -- Logic: Shift + Dash + Move direction PressKey(Enum.KeyCode.W, 0.0) -- Giữ đi tới PressKey(Enum.KeyCode.Q, 0.1) -- Dash task.wait(0.15) -- Thêm Emote cancel nếu cần (tùy moveset) game:GetService("ReplicatedStorage"):WaitForChild("DefaultChatSystemChatEvents"):WaitForChild("SayMessageRequest"):FireServer("/e dance", "All") task.wait(0.01) LocalPlayer.Character.Humanoid:MoveTo(LocalPlayer.Character.HumanoidRootPart.Position) -- Stop emote end -------------------------------------------------------------------- -- GIAO DIỆN (GUI) - NÂNG CẤP -------------------------------------------------------------------- local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "TSB_Ultimate_Suite" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = game.CoreGui or LocalPlayer:WaitForChild("PlayerGui") -- NÚT LOCK MOBILE local LockBtn = Instance.new("TextButton") LockBtn.Name = "LockBtn" LockBtn.Size = UDim2.new(0, 60, 0, 60) LockBtn.Position = UDim2.new(0.85, 0, 0.55, 0) LockBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 20) LockBtn.BackgroundTransparency = 0.3 LockBtn.Text = "LOCK" LockBtn.TextColor3 = Color3.fromRGB(255, 255, 255) LockBtn.Font = Enum.Font.GothamBlack LockBtn.TextSize = 13 LockBtn.Parent = ScreenGui Instance.new("UICorner", LockBtn).CornerRadius = UDim.new(1, 0) local Stroke = Instance.new("UIStroke", LockBtn) Stroke.Color = Color3.fromRGB(255, 50, 50) Stroke.Thickness = 2 -- MAIN MENU local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 240, 0, 320) MainFrame.Position = UDim2.new(0.05, 0, 0.25, 0) MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15) MainFrame.BorderSizePixel = 0 MainFrame.Parent = ScreenGui Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 8) -- Header local Header = Instance.new("Frame") Header.Size = UDim2.new(1, 0, 0, 35) Header.BackgroundColor3 = Color3.fromRGB(25, 25, 25) Header.Parent = MainFrame Instance.new("UICorner", Header).CornerRadius = UDim.new(0, 8) local Title = Instance.new("TextLabel") Title.Text = "TSB ULTIMATE" Title.Size = UDim2.new(1, -40, 1, 0) Title.BackgroundTransparency = 1 Title.TextColor3 = Color3.fromRGB(0, 170, 255) Title.Font = Enum.Font.GothamBlack Title.TextSize = 16 Title.Parent = Header -- Minimize Button local MinBtn = Instance.new("TextButton") MinBtn.Text = "-" MinBtn.Size = UDim2.new(0, 35, 0, 35) MinBtn.Position = UDim2.new(1, -35, 0, 0) MinBtn.BackgroundTransparency = 1 MinBtn.TextColor3 = Color3.fromRGB(255, 255, 255) MinBtn.Font = Enum.Font.GothamBold MinBtn.TextSize = 20 MinBtn.Parent = Header local isMin = false MinBtn.MouseButton1Click:Connect(function() isMin = not isMin if isMin then MainFrame:TweenSize(UDim2.new(0, 240, 0, 35), "Out", "Quad", 0.3) MinBtn.Text = "+" else MainFrame:TweenSize(UDim2.new(0, 240, 0, 320), "Out", "Quad", 0.3) MinBtn.Text = "-" end end) -- Container local Container = Instance.new("ScrollingFrame") Container.Size = UDim2.new(1, -10, 1, -45) Container.Position = UDim2.new(0, 5, 0, 40) Container.BackgroundTransparency = 1 Container.ScrollBarThickness = 2 Container.Parent = MainFrame local UIList = Instance.new("UIListLayout") UIList.Parent = Container UIList.SortOrder = Enum.SortOrder.LayoutOrder UIList.Padding = UDim.new(0, 6) -- Section Title Helper local function createSection(text) local lbl = Instance.new("TextLabel") lbl.Text = text lbl.Size = UDim2.new(1, 0, 0, 20) lbl.BackgroundTransparency = 1 lbl.TextColor3 = Color3.fromRGB(150, 150, 150) lbl.Font = Enum.Font.GothamBold lbl.TextSize = 12 lbl.Parent = Container end -- Keybind Button Helper local function createKeybindBtn(text, configKey, callback) local frame = Instance.new("Frame") frame.Size = UDim2.new(1, 0, 0, 30) frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) frame.Parent = Container Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 6) local lbl = Instance.new("TextLabel") lbl.Text = text lbl.Size = UDim2.new(0.6, 0, 1, 0) lbl.Position = UDim2.new(0, 10, 0, 0) lbl.BackgroundTransparency = 1 lbl.TextColor3 = Color3.fromRGB(255, 255, 255) lbl.Font = Enum.Font.GothamSemibold lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.TextSize = 12 lbl.Parent = frame local btn = Instance.new("TextButton") btn.Text = Settings[configKey].Name btn.Size = UDim2.new(0.3, 0, 0.8, 0) btn.Position = UDim2.new(0.65, 0, 0.1, 0) btn.BackgroundColor3 = Color3.fromRGB(50, 50, 50) btn.TextColor3 = Color3.fromRGB(0, 255, 0) btn.Font = Enum.Font.Code btn.TextSize = 12 btn.Parent = frame Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4) btn.MouseButton1Click:Connect(function() if IsBinding then return end -- Đang bind phím khác thì thôi btn.Text = "..." btn.TextColor3 = Color3.fromRGB(255, 255, 0) IsBinding = {Key = configKey, Button = btn, Callback = callback} end) end -- BUILD MENU ITEMS createSection("--- LOCK SETTINGS ---") -- Lock Keybind createKeybindBtn("Lock Toggle Key", "LockKey", function(newKey) Settings.LockKey = newKey end) -- Manual Settings local function createInput(text, default, callback) local frame = Instance.new("Frame") frame.Size = UDim2.new(1, 0, 0, 30) frame.BackgroundTransparency = 1 frame.Parent = Container local lbl = Instance.new("TextLabel") lbl.Text = text lbl.Size = UDim2.new(0.7, 0, 1, 0) lbl.BackgroundTransparency = 1 lbl.TextColor3 = Color3.fromRGB(200, 200, 200) lbl.Font = Enum.Font.Gotham lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.TextSize = 12 lbl.Parent = frame local box = Instance.new("TextBox") box.Text = tostring(default) box.Size = UDim2.new(0.25, 0, 1, 0) box.Position = UDim2.new(0.75, 0, 0, 0) box.BackgroundColor3 = Color3.fromRGB(30, 30, 30) box.TextColor3 = Color3.fromRGB(255, 255, 255) box.Font = Enum.Font.Gotham box.TextSize = 12 box.Parent = frame Instance.new("UICorner", box).CornerRadius = UDim.new(0, 6) box.FocusLost:Connect(function() local n = tonumber(box.Text) if n then callback(n) end end) end createInput("Prediction", Settings.Prediction, function(v) Settings.Prediction = v end) createInput("Smoothness", Settings.Smoothness, function(v) Settings.Smoothness = v end) createSection("--- TECH MACROS ---") createKeybindBtn("Kiba Tech", "KibaKey", function(newKey) Settings.KibaKey = newKey end) createKeybindBtn("Supa Tech", "SupaKey", function(newKey) Settings.SupaKey = newKey end) createKeybindBtn("Lethal Dash", "LethalKey", function(newKey) Settings.LethalKey = newKey end) -------------------------------------------------------------------- -- LOGIC XỬ LÝ -------------------------------------------------------------------- -- 1. Xử lý đổi phím (Binding System) UserInputService.InputBegan:Connect(function(input, gpe) -- Xử lý khi đang Bind phím if IsBinding and input.UserInputType == Enum.UserInputType.Keyboard then IsBinding.Button.Text = input.KeyCode.Name IsBinding.Button.TextColor3 = Color3.fromRGB(0, 255, 0) Settings[IsBinding.Key] = input.KeyCode if IsBinding.Callback then IsBinding.Callback(input.KeyCode) end IsBinding = nil return end if gpe then return end -- Xử lý bật/tắt Lock if input.KeyCode == Settings.LockKey then IsLocked = not IsLocked if IsLocked then -- Logic tìm mục tiêu local shortest = math.huge local target = nil for _, p in pairs(Players:GetPlayers()) do if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") and p.Character.Humanoid.Health > 0 then local dist = (p.Character.HumanoidRootPart.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude if dist < shortest then shortest = dist; target = p end end end CurrentTarget = target if CurrentTarget then LockBtn.Text = "LOCKED" LockBtn.TextColor3 = Color3.fromRGB(0, 255, 0) Stroke.Color = Color3.fromRGB(0, 255, 0) else IsLocked = false end else CurrentTarget = nil LockBtn.Text = "LOCK" LockBtn.TextColor3 = Color3.fromRGB(255, 255, 255) Stroke.Color = Color3.fromRGB(255, 50, 50) end end -- Xử lý Tech Macros if input.KeyCode == Settings.KibaKey then DoKibaTech() elseif input.KeyCode == Settings.SupaKey then DoSupaTech() elseif input.KeyCode == Settings.LethalKey then DoLethalDash() end end) -- Nút Mobile LockBtn.MouseButton1Click:Connect(function() VirtualInputManager:SendKeyEvent(true, Settings.LockKey, false, game) task.wait(0.05) VirtualInputManager:SendKeyEvent(false, Settings.LockKey, false, game) end) -- Vòng lặp Lock Camera RunService.RenderStepped:Connect(function() if IsLocked and CurrentTarget and CurrentTarget.Character and CurrentTarget.Character:FindFirstChild(Settings.TargetPart) then local targetPart = CurrentTarget.Character[Settings.TargetPart] local vel = targetPart.Velocity * Settings.Prediction local pos = targetPart.Position + vel local look = CFrame.new(Camera.CFrame.Position, pos) Camera.CFrame = Camera.CFrame:Lerp(look, 1 - Settings.Smoothness) elseif IsLocked then -- Mất mục tiêu -> Tự tắt IsLocked = false CurrentTarget = nil LockBtn.Text = "LOCK" Stroke.Color = Color3.fromRGB(255, 50, 50) end end) game:GetService("StarterGui"):SetCore("SendNotification", { Title = "TSB Tech Suite"; Text = "Loaded! Configure keybinds in Menu."; Duration = 5; })