local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local VirtualInput = pcall(require, game:GetService("VirtualInputManager")) and game:GetService("VirtualInputManager") or nil local player = Players.LocalPlayer local camera = workspace.CurrentCamera local currentMode = "none" local settings = { fov = 200, smoothing = 5, visibleCheck = false, silentDelay = 0.125, useVirtualInput = (VirtualInput ~= nil), espEnabled = false } local function getAlivePlayers() local list = {} for _, plr in ipairs(Players:GetPlayers()) do if plr ~= player then local char = plr.Character if char and char:FindFirstChild("Humanoid") and char.Humanoid.Health > 0 then table.insert(list, plr) end end end return list end local function getBestTarget() local center = camera.ViewportSize / 2 local bestAngle = settings.fov local bestPart = nil for _, plr in ipairs(getAlivePlayers()) do local char = plr.Character local part = char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart") if part then local pos, onScreen = camera:WorldToScreenPoint(part.Position) if onScreen then local angle = (Vector2.new(pos.X, pos.Y) - center).Magnitude if angle < bestAngle then bestAngle = angle bestPart = part end end end end return bestPart, bestAngle end local function isVisible(part) if not settings.visibleCheck then return true end local origin = camera.CFrame.Position local direction = (part.Position - origin).unit * 500 local ray = Ray.new(origin, direction) local hit = workspace:FindPartOnRay(ray, player.Character) return hit and (hit:IsDescendantOf(part.Parent) or hit == part) end local function smoothAim(targetCF, currentCF, smooth) if smooth <= 1 then return targetCF end return currentCF:lerp(targetCF, 1 / smooth) end local function updateAimbot() if currentMode ~= "aimbot" then return end local targetPart = getBestTarget() if targetPart and isVisible(targetPart) then local targetCF = CFrame.new(camera.CFrame.Position, targetPart.Position) camera.CFrame = smoothAim(targetCF, camera.CFrame, settings.smoothing) end end local function silentAimLoop() while true do if currentMode == "silent" then local targetPart = getBestTarget() if targetPart and isVisible(targetPart) then if settings.useVirtualInput and VirtualInput then local screenPos, onScreen = camera:WorldToScreenPoint(targetPart.Position) if onScreen then local x, y = screenPos.X, screenPos.Y pcall(function() VirtualInput:SendMouseMoveEvent(x, y, 0, game, 0) task.wait(0.01) VirtualInput:SendMouseButtonEvent(x, y, 0, true, game, 0) task.wait(0.05) VirtualInput:SendMouseButtonEvent(x, y, 0, false, game, 0) end) end else pcall(function() mouse1click() end) end end end task.wait(settings.silentDelay) end end coroutine.wrap(silentAimLoop)() local espMap = {} local function createESPDrawing() local box = Drawing.new("Square") box.Thickness = 1 box.Filled = false box.Visible = false local line = Drawing.new("Line") line.Thickness = 1 line.Visible = false local text = Drawing.new("Text") text.Size = 14 text.Center = true text.Outline = true text.Visible = false return {box = box, line = line, text = text} end local function updateESP() local center = camera.ViewportSize / 2 local activePlayers = {} for _, plr in ipairs(getAlivePlayers()) do local char = plr.Character local root = char:FindFirstChild("HumanoidRootPart") local head = char:FindFirstChild("Head") if root and head then local rootPos, rootOn = camera:WorldToScreenPoint(root.Position) local headPos, headOn = camera:WorldToScreenPoint(head.Position) if rootOn and headOn then local height = math.abs(rootPos.Y - headPos.Y) if height > 0 then local width = height * 0.6 local boxPos = Vector2.new(headPos.X - width/2, headPos.Y) if not espMap[plr] then espMap[plr] = createESPDrawing() end local obj = espMap[plr] obj.box.Color = Color3.fromRGB(0, 255, 0) obj.box.Position = boxPos obj.box.Size = Vector2.new(width, height) obj.box.Visible = settings.espEnabled obj.line.From = Vector2.new(center.X, camera.ViewportSize.Y) obj.line.To = Vector2.new(rootPos.X, rootPos.Y) obj.line.Visible = settings.espEnabled obj.text.Position = Vector2.new(rootPos.X, headPos.Y - 15) obj.text.Text = plr.Name obj.text.Visible = settings.espEnabled activePlayers[plr] = true end end end end for plr, obj in pairs(espMap) do if not activePlayers[plr] then obj.box.Visible = false obj.line.Visible = false obj.text.Visible = false end end end local screenGui = Instance.new("ScreenGui") screenGui.Name = "SwillAimbotGUI" screenGui.Parent = player:WaitForChild("PlayerGui") screenGui.ResetOnSpawn = false local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 280, 0, 420) frame.Position = UDim2.new(0.5, -140, 0.5, -210) frame.BackgroundColor3 = Color3.fromRGB(20, 20, 30) frame.BackgroundTransparency = 0.15 frame.BorderSizePixel = 0 frame.Parent = screenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 12) corner.Parent = frame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 32) title.Position = UDim2.new(0, 0, 0, 0) title.BackgroundColor3 = Color3.fromRGB(30, 30, 40) title.Text = "Vortex" title.TextColor3 = Color3.fromRGB(0, 255, 255) title.Font = Enum.Font.GothamBold title.TextSize = 14 title.Parent = frame local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 24, 0, 24) closeBtn.Position = UDim2.new(1, -28, 0, 4) closeBtn.BackgroundColor3 = Color3.fromRGB(200, 60, 60) closeBtn.Text = "X" closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.Font = Enum.Font.GothamBold closeBtn.TextSize = 14 closeBtn.Parent = title local function createModeButton(text, y, mode) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.9, 0, 0, 35) btn.Position = UDim2.new(0.05, 0, 0, y) btn.BackgroundColor3 = (currentMode == mode) and Color3.fromRGB(0, 120, 0) or Color3.fromRGB(60, 60, 80) btn.Text = text .. (currentMode == mode and " [ON]" or " [OFF]") btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.GothamBold btn.TextSize = 13 btn.Parent = frame local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 6) btnCorner.Parent = btn btn.MouseButton1Click:Connect(function() if currentMode == mode then currentMode = "none" btn.BackgroundColor3 = Color3.fromRGB(60, 60, 80) btn.Text = text .. " [OFF]" else currentMode = mode for _, other in ipairs({aimbotBtn, silentBtn}) do if other ~= btn then other.BackgroundColor3 = Color3.fromRGB(60, 60, 80) other.Text = other.Text:gsub(" %[ON%]", " [OFF]") end end btn.BackgroundColor3 = Color3.fromRGB(0, 120, 0) btn.Text = text .. " [ON]" end end) return btn end local function addSlider(text, y, key, minVal, maxVal, defaultVal) local label = Instance.new("TextLabel") label.Size = UDim2.new(0.8, 0, 0, 20) label.Position = UDim2.new(0.05, 0, 0, y) label.BackgroundTransparency = 1 label.Text = text .. ": " .. defaultVal label.TextColor3 = Color3.fromRGB(200, 200, 200) label.Font = Enum.Font.Gotham label.TextSize = 12 label.Parent = frame local sliderBg = Instance.new("Frame") sliderBg.Size = UDim2.new(0.6, 0, 0, 6) sliderBg.Position = UDim2.new(0.05, 0, 0, y+20) sliderBg.BackgroundColor3 = Color3.fromRGB(80, 80, 100) sliderBg.Parent = frame local bgCorner = Instance.new("UICorner") bgCorner.CornerRadius = UDim.new(1, 0) bgCorner.Parent = sliderBg local fill = Instance.new("Frame") fill.Size = UDim2.new((defaultVal-minVal)/(maxVal-minVal), 0, 1, 0) fill.BackgroundColor3 = Color3.fromRGB(0, 255, 255) fill.BorderSizePixel = 0 fill.Parent = sliderBg local knob = Instance.new("TextButton") knob.Size = UDim2.new(0, 12, 0, 12) knob.Position = UDim2.new((defaultVal-minVal)/(maxVal-minVal), -6, 0.5, -6) knob.BackgroundColor3 = Color3.fromRGB(255, 255, 255) knob.Text = "" knob.Parent = sliderBg local knobCorner = Instance.new("UICorner") knobCorner.CornerRadius = UDim.new(1, 0) knobCorner.Parent = knob local valueLabel = Instance.new("TextLabel") valueLabel.Size = UDim2.new(0.2, 0, 0, 20) valueLabel.Position = UDim2.new(0.7, 0, 0, y+2) valueLabel.BackgroundTransparency = 1 valueLabel.Text = tostring(defaultVal) valueLabel.TextColor3 = Color3.fromRGB(0, 255, 255) valueLabel.Font = Enum.Font.Gotham valueLabel.TextSize = 12 valueLabel.Parent = frame local value = defaultVal local dragging = false knob.MouseButton1Down:Connect(function() dragging = true end) UserInputService.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) UserInputService.InputChanged:Connect(function(inp) if dragging and inp.UserInputType == Enum.UserInputType.MouseMovement then local pos = inp.Position.X - sliderBg.AbsolutePosition.X local percent = math.clamp(pos / sliderBg.AbsoluteSize.X, 0, 1) value = minVal + (maxVal - minVal) * percent value = math.clamp(value, minVal, maxVal) fill.Size = UDim2.new(percent, 0, 1, 0) knob.Position = UDim2.new(percent, -6, 0.5, -6) valueLabel.Text = tostring(math.floor(value)) label.Text = text .. ": " .. tostring(math.floor(value)) settings[key] = value end end) end local function addToggle(text, y, key) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0.9, 0, 0, 30) btn.Position = UDim2.new(0.05, 0, 0, y) btn.BackgroundColor3 = settings[key] and Color3.fromRGB(0, 120, 0) or Color3.fromRGB(60, 60, 80) btn.Text = text .. (settings[key] and " [ON]" or " [OFF]") btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Font = Enum.Font.Gotham btn.TextSize = 13 btn.Parent = frame local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 6) btnCorner.Parent = btn btn.MouseButton1Click:Connect(function() settings[key] = not settings[key] btn.BackgroundColor3 = settings[key] and Color3.fromRGB(0, 120, 0) or Color3.fromRGB(60, 60, 80) btn.Text = text .. (settings[key] and " [ON]" or " [OFF]") end) end local aimbotBtn = createModeButton("🎯 Aimbot (слСТСниС)", 45, "aimbot") local silentBtn = createModeButton("🀫 Silent Aim (Π°Π²Ρ‚ΠΎΡΡ‚Ρ€Π΅Π»ΡŒΠ±Π°)", 90, "silent") addToggle("πŸ‘οΈ Visible Check", 135, "visibleCheck") addToggle("πŸ”² ESP", 175, "espEnabled") addSlider("FOV (50-400)", 215, "fov", 50, 400, 200) addSlider("Smoothing (1-20)", 265, "smoothing", 1, 20, 5) addSlider("Silent Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° (сСк)", 315, "silentDelay", 0.05, 0.5, 0.125) local statsLabel = Instance.new("TextLabel") statsLabel.Size = UDim2.new(0.9, 0, 0, 25) statsLabel.Position = UDim2.new(0.05, 0, 0, 370) statsLabel.BackgroundTransparency = 1 statsLabel.Text = "Π Π΅ΠΆΠΈΠΌ: Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½" statsLabel.TextColor3 = Color3.fromRGB(200, 200, 200) statsLabel.Font = Enum.Font.Gotham statsLabel.TextSize = 12 statsLabel.Parent = frame closeBtn.MouseButton1Click:Connect(function() screenGui:Destroy() end) local drag = false local dragStart, frameStart title.InputBegan:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 then drag = true dragStart = inp.Position frameStart = frame.Position end end) UserInputService.InputEnded:Connect(function(inp) if inp.UserInputType == Enum.UserInputType.MouseButton1 then drag = false end end) UserInputService.InputChanged:Connect(function(inp) if drag and inp.UserInputType == Enum.UserInputType.MouseMovement then local delta = inp.Position - dragStart frame.Position = UDim2.new(frameStart.X.Scale, frameStart.X.Offset + delta.X, frameStart.Y.Scale, frameStart.Y.Offset + delta.Y) end end) RunService.RenderStepped:Connect(function() pcall(function() updateAimbot() if settings.espEnabled then updateESP() end local _, angle = getBestTarget() local modeText = (currentMode == "aimbot" and "Aimbot" or (currentMode == "silent" and "Silent" or "Π²Ρ‹ΠΊΠ»")) statsLabel.Text = string.format("Π Π΅ΠΆΠΈΠΌ: %s | Π˜Π³Ρ€ΠΎΠΊΠΎΠ²: %d | Π£Π³ΠΎΠ»: %d", modeText, #getAlivePlayers(), angle or 0) end) end) game:GetService("StarterGui"):SetCore("SendNotification", { Title = "VORTEX", Text = "Script Loaded!", Duration = 4 })