------------------------------------------------- -- SERVICES & REMOTES ------------------------------------------------- local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local StarterGui = game:GetService("StarterGui") local localPlayer = Players.LocalPlayer local EventsFolder = ReplicatedStorage:WaitForChild("Events") local GrabEvent = EventsFolder:WaitForChild("Grab") local ActivateEvent = EventsFolder:WaitForChild("ActivateButton") ------------------------------------------------- -- STATE VARIABLES ------------------------------------------------- local AUTO = false -- Auto-Aura Grab toggle (M key) local PROF = false -- Professional Mode toggle (X key) local SelectedTrap = "Cage4" -- Selected Trap (e.g., "Cage4" stands for "Cage") local currentTarget = nil -- Currently grabbed target for Professional Mode local autoLoopRunning = false -- For Auto-Aura Grab loop local proLoopRunning = false -- For Professional Mode loop ------------------------------------------------- -- UTILITY FUNCTIONS ------------------------------------------------- local function notify(text) pcall(function() StarterGui:SetCore("SendNotification", {Title = "AutoAura", Text = text, Duration = 2}) end) end local function safeFire(remote, ...) if remote and remote:IsA("RemoteEvent") then remote:FireServer(...) else warn("[AutoAura] Invalid remote!") end end ------------------------------------------------- -- GRAB FUNCTION (para el botón Kill) ------------------------------------------------- local function u() local ch = localPlayer.Character if not ch then return end local hrp = ch:FindFirstChild("HumanoidRootPart") if not hrp then return end local closest, bestDist = nil, 10 for _, pl in ipairs(Players:GetPlayers()) do if pl ~= localPlayer and pl.Character then local phrp = pl.Character:FindFirstChild("HumanoidRootPart") if phrp then local d = (hrp.Position - phrp.Position).Magnitude if d < bestDist then bestDist = d closest = pl end end end end if closest and closest.Character then local targetHead = closest.Character:FindFirstChild("Head") if targetHead then safeFire(GrabEvent, targetHead, "Grab") end end end ------------------------------------------------- -- AUTO-AURA GRAB FUNCTION (every 1/70 sec within 20 studs) ------------------------------------------------- local function toggleAutoAura(btn) AUTO = not AUTO btn.Text = AUTO and "Auto-Aura Grab: ON" or "Auto-Aura Grab: OFF" notify(AUTO and "Auto-Aura Enabled" or "Auto-Aura Disabled") if AUTO and not autoLoopRunning then autoLoopRunning = true task.spawn(function() while AUTO do local ch = localPlayer.Character local hrp = ch and ch:FindFirstChild("HumanoidRootPart") if hrp then local closest, bestDist = nil, 20 for _, pl in ipairs(Players:GetPlayers()) do if pl ~= localPlayer and pl.Character then local phrp = pl.Character:FindFirstChild("HumanoidRootPart") if phrp then local d = (hrp.Position - phrp.Position).Magnitude if d < bestDist then bestDist = d closest = pl end end end end if closest and closest.Character then local targetTorso = closest.Character:FindFirstChild("Torso") or closest.Character:FindFirstChild("UpperTorso") if targetTorso then safeFire(GrabEvent, targetTorso, "Grab", Vector3.new(), CFrame.new(targetTorso.Position)) end end end task.wait(1/70) end autoLoopRunning = false end) end end ------------------------------------------------- -- PROFESSIONAL MODE LOOP (every 0.035 sec within 9 studs) ------------------------------------------------- local function professionalModeLoop() proLoopRunning = true while PROF do local ch = localPlayer.Character local hrp = ch and ch:FindFirstChild("HumanoidRootPart") if hrp then if not currentTarget then local candidate, bestDist = nil, 10.5 for _, pl in ipairs(Players:GetPlayers()) do if pl ~= localPlayer and pl.Character then local phrp = pl.Character:FindFirstChild("HumanoidRootPart") if phrp then local d = (hrp.Position - phrp.Position).Magnitude if d <= 10.5 and d < bestDist then bestDist = d candidate = pl end end end end if candidate and candidate.Character then local targetTorso = candidate.Character:FindFirstChild("Torso") or candidate.Character:FindFirstChild("UpperTorso") if targetTorso then safeFire(GrabEvent, targetTorso, "Grab", Vector3.new(), CFrame.new(targetTorso.Position)) currentTarget = candidate end end else local targetTorso = nil if currentTarget.Character then targetTorso = currentTarget.Character:FindFirstChild("Torso") or currentTarget.Character:FindFirstChild("UpperTorso") end if targetTorso then local d = (hrp.Position - targetTorso.Position).Magnitude if d > 10.5 then currentTarget = nil else local bestCandidate = currentTarget local bestCandDist = d for _, pl in ipairs(Players:GetPlayers()) do if pl ~= localPlayer and pl ~= currentTarget and pl.Character then local phrp2 = pl.Character:FindFirstChild("HumanoidRootPart") if phrp2 then local d2 = (hrp.Position - phrp2.Position).Magnitude if d2 <= 10. and d2 > bestCandDist then bestCandDist = d2 bestCandidate = pl end end end end if bestCandidate ~= currentTarget then local newTargetTorso = bestCandidate.Character:FindFirstChild("Torso") or bestCandidate.Character:FindFirstChild("UpperTorso") if newTargetTorso then safeFire(GrabEvent, newTargetTorso, "Grab", Vector3.new(), CFrame.new(newTargetTorso.Position)) currentTarget = bestCandidate end end end else currentTarget = nil end end end task.wait(1/70) end proLoopRunning = false end ------------------------------------------------- -- Force Immediate Refresh in Professional Mode ------------------------------------------------- local function forceProfessionalCandidate() local ch = localPlayer.Character local hrp = ch and ch:FindFirstChild("HumanoidRootPart") if hrp then local candidate, bestDist = nil, 9.9 for _, pl in ipairs(Players:GetPlayers()) do if pl ~= localPlayer and pl.Character then local phrp = pl.Character:FindFirstChild("HumanoidRootPart") if phrp then local d = (hrp.Position - phrp.Position).Magnitude if d <= 9.9 and d < bestDist then bestDist = d candidate = pl end end end end if candidate and candidate.Character then local targetTorso = candidate.Character:FindFirstChild("Torso") or candidate.Character:FindFirstChild("UpperTorso") if targetTorso then safeFire(GrabEvent, targetTorso, "Grab", Vector3.new(), CFrame.new(targetTorso.Position)) currentTarget = candidate end end end end ------------------------------------------------- -- Detect Left-Click: Drop current target and force refresh (PC Only) ------------------------------------------------- local function detectDropInput(input) if PROF then if input.UserInputType == Enum.UserInputType.MouseButton1 then if currentTarget then currentTarget = nil forceProfessionalCandidate() end end end end UIS.InputBegan:Connect(detectDropInput) ------------------------------------------------- -- Toggle Professional Mode (Auto-Aura Grab Kill) ------------------------------------------------- local function toggleProMode(toggleBtn) PROF = not PROF if toggleBtn then toggleBtn.Text = PROF and "Pro Mode: ON" or "Pro Mode: OFF" toggleBtn.BackgroundColor3 = PROF and Color3.fromRGB(0,255,0) or Color3.fromRGB(255,0,0) end notify(PROF and "Professional Mode Enabled" or "Professional Mode Disabled") if PROF then currentTarget = nil if not proLoopRunning then task.spawn(professionalModeLoop) end else currentTarget = nil end end ------------------------------------------------- -- TELEPORT GRAB FUNCTION ------------------------------------------------- local function teleportGrab(pl) if not (pl and pl.Character) then return end local targetTorso = pl.Character:FindFirstChild("Torso") or pl.Character:FindFirstChild("UpperTorso") local ch = localPlayer.Character local hrp = ch and ch:FindFirstChild("HumanoidRootPart") if targetTorso and hrp then local home = hrp.CFrame hrp.CFrame = targetTorso.CFrame local t0 = tick() while tick() - t0 <= 0.7 do safeFire(GrabEvent, targetTorso, "Grab", Vector3.new(), CFrame.new(targetTorso.Position)) task.wait(0.01) end local t1 = tick() while tick() - t1 < 1 do hrp.CFrame = home if (hrp.Position - home.Position).Magnitude < 1 then break end task.wait(0.01) end hrp.CFrame = home end end ------------------------------------------------- -- CREATE GUI (Old Version) ------------------------------------------------- local function createGUI() local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "AA_Gui" ScreenGui.Parent = localPlayer:WaitForChild("PlayerGui") -- MAIN FRAME local mainFrame = Instance.new("Frame", ScreenGui) mainFrame.Size = UDim2.fromOffset(100,50) mainFrame.Position = UDim2.new(0.5,-125,0.8,-150) mainFrame.BackgroundColor3 = Color3.fromRGB(25,25,25) mainFrame.Draggable = true mainFrame.BackgroundTransparency = 1 local mCorner = Instance.new("UICorner", mainFrame) mCorner.CornerRadius = UDim.new(0,12) -- Textbox for times local TextBox = Instance.new("TextBox") TextBox.Name = "TextBox" TextBox.Parent = mainFrame TextBox.Size = UDim2.new(0, 50, 0, 30) TextBox.Position = UDim2.new(0, 10, 0, 10) TextBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30) TextBox.TextColor3 = Color3.fromRGB(255, 255, 255) TextBox.PlaceholderText = "Write here..." TextBox.PlaceholderColor3 = Color3.fromRGB(180, 180, 180) TextBox.TextSize = 18 TextBox.ClearTextOnFocus = false TextBox.Text = "" -- KILL BUTTON (ahora también hace Grab) local killBtn = Instance.new("TextButton") killBtn.Parent = mainFrame killBtn.Size = UDim2.new(0.5,-10,0,30) killBtn.Position = UDim2.new(0,5,0,40) killBtn.Text = "Kill" killBtn.TextScaled = true killBtn.BackgroundColor3 = Color3.fromRGB(255,50,50) killBtn.MouseButton1Click:Connect(function() local value = tonumber(TextBox.Text) or 0 for grabfc = 1, value do task.spawn(u) task.spawn(u) task.spawn(function() safeFire(ActivateEvent, SelectedTrap) end) end end) -- TRAP BUTTON & DROP-DOWN LIST local trapBtn = killBtn:Clone() trapBtn.Parent = mainFrame trapBtn.Position = UDim2.new(0.5,0,0,40) trapBtn.Text = "Trap: " .. ((SelectedTrap=="Cage4") and "Cage" or SelectedTrap) trapBtn.TextScaled = true trapBtn.BackgroundColor3 = Color3.fromRGB(50,150,50) local trapFrame = Instance.new("ScrollingFrame", mainFrame) trapFrame.Size = UDim2.new(1,-10,0,60) trapFrame.Position = UDim2.new(0,5,0,80) trapFrame.BackgroundColor3 = Color3.fromRGB(35,35,35) trapFrame.ScrollBarThickness = 6 trapFrame.Visible = false trapFrame.CanvasSize = UDim2.new(0,0,0,400) for i, name in ipairs({"VendingMachine","Cage","Shark","Guillotine","Sled","Machine","Catapult","VendingMachine2","VendingMachine3","Machine2","Cage2","Cage3"}) do local tBtn = Instance.new("TextButton", trapFrame) tBtn.Size = UDim2.new(1,0,0,25) tBtn.Position = UDim2.new(0,0,0,(i-1)*27) tBtn.Font = Enum.Font.GothamBold tBtn.TextSize = 16 tBtn.TextScaled = true tBtn.BackgroundColor3 = Color3.fromRGB(100,100,100) local tCorner = Instance.new("UICorner", tBtn) tCorner.CornerRadius = UDim.new(0,8) tBtn.Text = name tBtn.MouseButton1Click:Connect(function() SelectedTrap = (name=="Cage") and "Cage4" or name trapBtn.Text = "Trap: " .. name trapFrame.Visible = false end) end trapBtn.MouseButton1Click:Connect(function() trapFrame.Visible = not trapFrame.Visible end) -- Persistent Toggle GUI BUTTON (always visible at top-left) local toggleBtn = Instance.new("TextButton", ScreenGui) toggleBtn.Size = UDim2.fromOffset(80,25) toggleBtn.Position = UDim2.new(0,5,0,35) toggleBtn.Text = "Toggle GUI" toggleBtn.TextScaled = true toggleBtn.BackgroundColor3 = Color3.fromRGB(0,150,0) toggleBtn.Draggable = true local togCorner = Instance.new("UICorner", toggleBtn) togCorner.CornerRadius = UDim.new(0,8) toggleBtn.MouseButton1Click:Connect(function() mainFrame.Visible = not mainFrame.Visible end) -- Make the GUI draggable. local dragging = false local ds, sp mainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true ds = input.Position sp = mainFrame.Position end end) UIS.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - ds mainFrame.Position = UDim2.new(sp.X.Scale, sp.X.Offset + delta.X, sp.Y.Scale, sp.Y.Offset + delta.Y) end end) UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) return ScreenGui, mainFrame, proButton, autoButton end ------------------------------------------------- -- INITIALIZE GUI & HANDLE CHARACTER RESPAWN ------------------------------------------------- local screenGui, mainFrame, proButton, autoButton = createGUI() -- KEYBINDS (PC Only): -- LeftAlt toggles GUI (only if UIS.TouchEnabled is false), X toggles Professional Mode, and M toggles Auto-Aura Grab. UIS.InputBegan:Connect(function(input, processed) if processed then return end if not UIS.TouchEnabled and input.KeyCode == Enum.KeyCode.LeftAlt then if screenGui then screenGui.Enabled = not screenGui.Enabled end elseif input.KeyCode == Enum.KeyCode.X then toggleProMode(proButton) if proButton then proButton.BackgroundColor3 = PROF and Color3.fromRGB(0,255,0) or Color3.fromRGB(255,0,0) end elseif input.KeyCode == Enum.KeyCode.M then toggleAutoAura(autoButton) end end) localPlayer.CharacterAdded:Connect(function() task.wait(1) if screenGui then screenGui:Destroy() end local newGui, newFrame, newProBtn, newAutoBtn = createGUI() proButton = newProBtn autoButton = newAutoBtn if AUTO then autoButton.Text = "Auto-Aura Grab: ON" if not autoLoopRunning then task.spawn(function() toggleAutoAura(autoButton) end) end end if PROF then currentTarget = nil -- Refresh Professional Mode upon respawn if not proLoopRunning then task.spawn(professionalModeLoop) end end end) ------------------------------------------------- -- END OF SCRIPT ---------------------------------------------------------