local Players = game:GetService("Players") local VirtualInputManager = game:GetService("VirtualInputManager") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local DISTANCIA_DETECCION = 40 local UMBRAL_ALTURA_MEDIA = 4.2 local UMBRAL_ALTURA_ANGULO = 7.5 local cooldown = false local activo = true UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.P then activo = not activo if activo then print("[Auto-Dive] OPTIMIZED: ON (P Key)") else print("[Auto-Dive] OPTIMIZED: OFF (P Key)") end end end) local function presionarTecla(tecla, requiereSalto) cooldown = true if requiereSalto then local character = LocalPlayer.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") local root = character and character:FindFirstChild("HumanoidRootPart") if humanoid and root then humanoid:ChangeState(Enum.HumanoidStateType.Jumping) root.Velocity = Vector3.new(root.Velocity.X, humanoid.JumpPower or 50, root.Velocity.Z) end task.wait(0.02) end VirtualInputManager:SendKeyEvent(true, tecla, false, game) task.wait(0.04) VirtualInputManager:SendKeyEvent(false, tecla, false, game) task.wait(0.9) -- Cooldown de recuperación cooldown = false end RunService.Heartbeat:Connect(function() if not activo or cooldown then return end local character = LocalPlayer.Character local root = character and character:FindFirstChild("HumanoidRootPart") if not root then return end local engine = workspace:FindFirstChild("Game") and workspace.Game:FindFirstChild("Engine") local ball = engine and engine:FindFirstChild("Ball") if ball and ball:IsA("BasePart") then local posicionPredicha = ball.Position + (ball.Velocity * 0.11) local distancia = (root.Position - posicionPredicha).Magnitude if distancia <= DISTANCIA_DETECCION then local posicionLocal = root.CFrame:PointToObjectSpace(posicionPredicha) local alturaRelativa = posicionPredicha.Y - root.Position.Y local vectorHaciaBalon = (posicionPredicha - root.Position).Unit local direccionBalon = ball.Velocity.Unit local seAcerca = vectorHaciaBalon:Dot(direccionBalon) < 0 if not seAcerca and ball.Velocity.Magnitude > 5 then return end local saltarParaAtajar = (alturaRelativa > UMBRAL_ALTURA_ANGULO) if posicionLocal.X >= -2 and posicionLocal.X <= 2 then if alturaRelativa > UMBRAL_ALTURA_MEDIA then task.spawn(function() presionarTecla(Enum.KeyCode.X, saltarParaAtajar) end) end elseif posicionLocal.X < -2 then if alturaRelativa <= UMBRAL_ALTURA_MEDIA then task.spawn(function() presionarTecla(Enum.KeyCode.Z, false) end) else task.spawn(function() presionarTecla(Enum.KeyCode.Q, saltarParaAtajar) end) end elseif posicionLocal.X > 2 then if alturaRelativa <= UMBRAL_ALTURA_MEDIA then task.spawn(function() presionarTecla(Enum.KeyCode.C, false) end) else task.spawn(function() presionarTecla(Enum.KeyCode.E, saltarParaAtajar) end) end end end end end) print("[Auto-Dive] Loaded successfully. Press 'P' on your keyboard to turn it on or off.")