-- Stable Aggressive Aimbot + Prediction + Dead Check + Rapid Triggerbot local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local localPlayer = Players.LocalPlayer local camera = workspace.CurrentCamera -- Anti Double Load if _G.MyESP_Aimbot_Triggerbot then if _G.MyESP_Aimbot_Triggerbot.screenGui then _G.MyESP_Aimbot_Triggerbot.screenGui:Destroy() end if _G.MyESP_Aimbot_Triggerbot.connections then for _, conn in pairs(_G.MyESP_Aimbot_Triggerbot.connections) do conn:Disconnect() end end for _, data in pairs(_G.MyESP_Aimbot_Triggerbot.drawings or {}) do if data.box then data.box:Remove() end if data.name then data.name:Remove() end if data.dist then data.dist:Remove() end end _G.MyESP_Aimbot_Triggerbot = nil return end _G.MyESP_Aimbot_Triggerbot = { screenGui = nil, drawings = {}, connections = {} } -- ================== SETTINGS ================== local ALL_ENABLED = true local AIM_PART = "Head" local AIM_FOV = 180 local PREDICTION = 0.15 local STICK_TIME = 0.4 -- Helps prevent rapid switching local TEAM_CHECK = false local WALLCHECK = true local FIRE_RATE = 0.07 local SHOW_BOXES = true local SHOW_NAMES = true local SHOW_DISTANCE = true local BOX_COLOR = Color3.fromRGB(0, 255, 100) local TEXT_COLOR = Color3.fromRGB(255, 255, 255) -- ================== DRAWINGS ================== local drawings = {} _G.MyESP_Aimbot_Triggerbot.drawings = drawings local function createDrawings(player) if player == localPlayer then return end local box = Drawing.new("Square") box.Thickness = 2; box.Color = BOX_COLOR; box.Filled = false; box.Transparency = 1 local nameText = Drawing.new("Text") nameText.Size = 16; nameText.Center = true; nameText.Outline = true; nameText.Color = TEXT_COLOR local distText = Drawing.new("Text") distText.Size = 14; distText.Center = true; distText.Outline = true; distText.Color = TEXT_COLOR drawings[player] = {box = box, name = nameText, dist = distText} end local function isAlive(character) local humanoid = character:FindFirstChild("Humanoid") return humanoid and humanoid.Health > 0 end local function isVisible(targetPart) if not WALLCHECK then return true end local blacklist = {} for _, v in ipairs(localPlayer.Character:GetDescendants()) do if v:IsA("BasePart") then table.insert(blacklist, v) end end for _, v in ipairs(targetPart.Parent:GetDescendants()) do if v:IsA("BasePart") then table.insert(blacklist, v) end end return #camera:GetPartsObscuringTarget({targetPart.Position}, blacklist) == 0 end local function updateESP() if not ALL_ENABLED then for _, d in pairs(drawings) do d.box.Visible = false; d.name.Visible = false; d.dist.Visible = false end return end for player, data in pairs(drawings) do local char = player.Character if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Head") then local root = char.HumanoidRootPart local head = char.Head local rootPos, onScreen = camera:WorldToViewportPoint(root.Position) local headPos = camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.5, 0)) if onScreen then local height = (camera:WorldToViewportPoint(root.Position - Vector3.new(0, 3, 0)).Y - headPos.Y) * 1.1 local width = height * 0.6 if SHOW_BOXES then data.box.Size = Vector2.new(width, height) data.box.Position = Vector2.new(rootPos.X - width/2, headPos.Y) data.box.Visible = true end if SHOW_NAMES then data.name.Text = player.Name data.name.Position = Vector2.new(rootPos.X, headPos.Y - 20) data.name.Visible = true end if SHOW_DISTANCE then local dist = (root.Position - camera.CFrame.Position).Magnitude data.dist.Text = string.format("%.0f", dist) data.dist.Position = Vector2.new(rootPos.X, rootPos.Y + height/2 + 5) data.dist.Visible = true end else data.box.Visible = false; data.name.Visible = false; data.dist.Visible = false end else data.box.Visible = false; data.name.Visible = false; data.dist.Visible = false end end end -- ================== STABLE AGGRESSIVE AIMBOT WITH DEAD CHECK ================== local currentTarget = nil local targetLockTime = 0 local lastShotTime = 0 local function getBestTarget() local closest = nil local shortest = AIM_FOV for _, player in ipairs(Players:GetPlayers()) do if player ~= localPlayer and player.Character then local char = player.Character local part = char:FindFirstChild(AIM_PART) local hum = char:FindFirstChild("Humanoid") -- Skip if player is dead if not isAlive(char) then continue end if part and hum then if TEAM_CHECK and player.Team == localPlayer.Team then continue end local screenPos, onScreen = camera:WorldToViewportPoint(part.Position) if not onScreen then continue end local mousePos = UserInputService:GetMouseLocation() local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude -- Strong target sticking if currentTarget and currentTarget.Parent == char and isAlive(char) and isVisible(part) then return part end if dist < shortest and isVisible(part) then shortest = dist closest = part end end end end return closest end local function updateAimbot() if not ALL_ENABLED then currentTarget = nil return end local targetPart = getBestTarget() if targetPart then if targetPart ~= currentTarget then if not currentTarget or (tick() - targetLockTime > STICK_TIME) then currentTarget = targetPart targetLockTime = tick() end end else currentTarget = nil end if currentTarget then local root = currentTarget.Parent:FindFirstChild("HumanoidRootPart") local predictedPos = currentTarget.Position if root then predictedPos = predictedPos + (root.Velocity * PREDICTION) end -- Aggressive hard lock local lockCFrame = CFrame.new(camera.CFrame.Position, predictedPos) camera.CFrame = lockCFrame end end local function updateTriggerbot() if not ALL_ENABLED or not currentTarget then return end -- Extra safety: stop if target died if not isAlive(currentTarget.Parent) then currentTarget = nil return end if not isVisible(currentTarget) then return end local now = tick() if now - lastShotTime >= FIRE_RATE then mouse1click() lastShotTime = now end end -- ================== TOGGLE BUTTON ================== local screenGui = Instance.new("ScreenGui") screenGui.ResetOnSpawn = false screenGui.Parent = localPlayer:WaitForChild("PlayerGui") _G.MyESP_Aimbot_Triggerbot.screenGui = screenGui local toggleBtn = Instance.new("TextButton") toggleBtn.Size = UDim2.new(0, 110, 0, 55) toggleBtn.Position = UDim2.new(0, 30, 0, 30) toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0) toggleBtn.TextColor3 = Color3.new(1, 1, 1) toggleBtn.Font = Enum.Font.GothamBold toggleBtn.TextSize = 20 toggleBtn.BorderSizePixel = 0 toggleBtn.Text = "ON" toggleBtn.Parent = screenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 14) corner.Parent = toggleBtn -- Draggable local dragging = false local dragStart, startPos toggleBtn.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = toggleBtn.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart toggleBtn.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) toggleBtn.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) toggleBtn.MouseButton1Click:Connect(function() ALL_ENABLED = not ALL_ENABLED if ALL_ENABLED then toggleBtn.Text = "ON" toggleBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 0) else toggleBtn.Text = "OFF" toggleBtn.BackgroundColor3 = Color3.fromRGB(170, 0, 0) currentTarget = nil end end) -- ================== MAIN LOOP ================== for _, plr in ipairs(Players:GetPlayers()) do createDrawings(plr) end Players.PlayerAdded:Connect(createDrawings) Players.PlayerRemoving:Connect(function(plr) if drawings[plr] then drawings[plr].box:Remove() drawings[plr].name:Remove() drawings[plr].dist:Remove() drawings[plr] = nil end end) local renderConn = RunService.RenderStepped:Connect(function() updateESP() updateAimbot() updateTriggerbot() end) table.insert(_G.MyESP_Aimbot_Triggerbot.connections, renderConn)