-- My roblox nick: rustpro_1, discord: shutka1 local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Drawing = Drawing local TextService = game:GetService("TextService") local localPlayer = Players.LocalPlayer local camera = workspace.CurrentCamera local mouse = localPlayer:GetMouse() local BACK_OFFSET = 0.015 local SMOOTHNESS = 0.28 local MAX_DISTANCE = 20000 local TELEPORT_INTERVAL = 0.001 local AIM_FOV = 18 local aimbotEnabled = true local aiming = false local renderConn local teleportTask local fovCircle local warningText local warningTimer = 0 local WARNING_DURATION = 3 -- seconds local CREATOR_NAME = "rustpro_1" -- Функция для создания предупреждения local function createWarning() if warningText then warningText:Remove() warningText = nil end warningText = Drawing.new("Text") warningText.Text = "it is creater of this script. you cant aimboting on him." warningText.Size = 28 warningText.Center = true warningText.Outline = true warningText.OutlineColor = Color3.new(0, 0, 0) warningText.Color = Color3.fromRGB(255, 50, 50) warningText.Transparency = 1 warningText.Visible = false -- Вычисляем размер текста local textBounds = TextService:GetTextSize( warningText.Text, warningText.Size, Enum.Font.SourceSans, Vector2.new(1000, 1000) ) warningText.Position = Vector2.new( camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2 - textBounds.Y / 2 ) return warningText end local function showWarning() if not warningText then createWarning() end warningText.Visible = true warningText.Transparency = 1 warningTimer = WARNING_DURATION -- Анимация появления local startTime = tick() local fadeInDuration = 0.3 while tick() - startTime < fadeInDuration do if warningText then local alpha = (tick() - startTime) / fadeInDuration warningText.Transparency = 1 - alpha end task.wait() end if warningText then warningText.Transparency = 0 end end local function updateWarning(deltaTime) if warningTimer > 0 then warningTimer = warningTimer - deltaTime if warningTimer <= 0 then -- Анимация исчезновения local fadeOutDuration = 0.5 local startTime = tick() local startTransparency = warningText and warningText.Transparency or 0 while tick() - startTime < fadeOutDuration do if warningText then local alpha = (tick() - startTime) / fadeOutDuration warningText.Transparency = startTransparency + alpha end task.wait() end if warningText then warningText.Visible = false warningText:Remove() warningText = nil end end end end local function createFovCircle() local circle = Drawing.new("Circle") circle.Thickness = 1.5 circle.NumSides = 100 circle.Radius = AIM_FOV * 5 circle.Filled = false circle.Color = Color3.fromRGB(0, 255, 0) circle.Transparency = 0.7 circle.Visible = true return circle end fovCircle = createFovCircle() RunService.RenderStepped:Connect(function(deltaTime) if fovCircle then fovCircle.Position = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2) fovCircle.Radius = AIM_FOV * 5 fovCircle.Color = aimbotEnabled and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 0, 0) end -- Обновление предупреждения updateWarning(deltaTime) end) local function isValidCharacter(char) if not char then return false end local hrp = char:FindFirstChild("HumanoidRootPart") local hum = char:FindFirstChildOfClass("Humanoid") return hrp and hum and hum.Health > 0 end local function isInFov(position) local screenPos, onScreen = camera:WorldToViewportPoint(position) if not onScreen then return false end local center = Vector2.new(camera.ViewportSize.X / 2, camera.ViewportSize.Y / 2) local dist = (Vector2.new(screenPos.X, screenPos.Y) - center).Magnitude return dist <= fovCircle.Radius end local function getNearestPlayer() local best, bestDist = nil, math.huge local camPos = camera.CFrame.Position for _, p in ipairs(Players:GetPlayers()) do if p ~= localPlayer and isValidCharacter(p.Character) then -- Проверяем, является ли игрок создателем if string.lower(p.Name) == string.lower(CREATOR_NAME) then showWarning() return nil -- Не позволяем целиться в создателя end local hrp = p.Character:FindFirstChild("HumanoidRootPart") if hrp then local head = p.Character:FindFirstChild("Head") if head then local pos = head.Position if isInFov(pos) then local dist = (hrp.Position - camPos).Magnitude if dist < bestDist and dist <= MAX_DISTANCE then best = p bestDist = dist end end end end end end return best end local function getBackOfHead(head) return head.Position - head.CFrame.LookVector * BACK_OFFSET end local function startAiming(targetChar) if not targetChar then return end -- Дополнительная проверка на создателя по имени игрока local targetPlayer = Players:GetPlayerFromCharacter(targetChar) if targetPlayer and string.lower(targetPlayer.Name) == string.lower(CREATOR_NAME) then showWarning() return end local head = targetChar:FindFirstChild("Head") if not head then return end aiming = true camera.CameraType = Enum.CameraType.Scriptable if renderConn then renderConn:Disconnect() end renderConn = RunService.RenderStepped:Connect(function() if not aiming or not isValidCharacter(targetChar) then return end local backPos = getBackOfHead(head) local camPos = camera.CFrame.Position local desired = CFrame.new(camPos, backPos) camera.CFrame = camera.CFrame:Lerp(desired, SMOOTHNESS) end) end local function stopAiming() aiming = false if renderConn then renderConn:Disconnect() end renderConn = nil teleportTask = nil camera.CameraType = Enum.CameraType.Custom end local function startTeleportLoop(targetChar) local thisTask = {} teleportTask = thisTask task.spawn(function() while teleportTask == thisTask and aiming do local myChar = localPlayer.Character if myChar and isValidCharacter(myChar) then local myHead = myChar:FindFirstChild("Head") if myHead then local backPos if targetChar and isValidCharacter(targetChar) then local targetHead = targetChar:FindFirstChild("Head") if targetHead then backPos = getBackOfHead(targetHead) end end if backPos then camera.CFrame = CFrame.new(myHead.Position, backPos) else camera.CFrame = CFrame.new(myHead.Position, myHead.Position + myHead.CFrame.LookVector) end end end task.wait(TELEPORT_INTERVAL) end end) end mouse.Button2Down:Connect(function() if not aimbotEnabled then return end -- Проверка перед началом прицеливания local target = getNearestPlayer() if target and target.Character then -- Еще одна проверка на всякий случай if string.lower(target.Name) == string.lower(CREATOR_NAME) then showWarning() return end startAiming(target.Character) startTeleportLoop(target.Character) else startAiming(nil) startTeleportLoop(nil) end end) mouse.Button2Up:Connect(function() if aiming then stopAiming() end end) UserInputService.InputBegan:Connect(function(input, gp) if gp then return end if input.KeyCode == Enum.KeyCode.K then aimbotEnabled = not aimbotEnabled print("Aimbot:", aimbotEnabled and "Enabled" or "Disabled") if not aimbotEnabled then stopAiming() end end end)