local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local Camera = workspace.CurrentCamera -- НАСТРОЙКИ local FOV_RADIUS = 150 local MIN_FOV = 50 local MAX_FOV = 400 local AimLockEnabled = false local ESPEnabled = false local WallCheckEnabled = true local FOVEnabled = true local Highlights = {} -- GUI local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "AimLockGUI" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") -- ПАНЕЛЬ local Panel = Instance.new("Frame") Panel.Parent = ScreenGui Panel.Size = UDim2.fromOffset(200, 260) Panel.Position = UDim2.new(0.5, -100, 0.7, 0) Panel.BackgroundColor3 = Color3.fromRGB(45, 45, 45) Panel.BorderSizePixel = 0 Panel.Active = true local PanelCorner = Instance.new("UICorner") PanelCorner.CornerRadius = UDim.new(0, 8) PanelCorner.Parent = Panel -- ФУНКЦИЯ СОЗДАНИЯ КНОПОК local function CreateButton(text, position, size) local Button = Instance.new("TextButton") Button.Parent = Panel Button.Size = size Button.Position = position Button.Text = text Button.TextScaled = true Button.BackgroundColor3 = Color3.fromRGB(60, 60, 60) Button.TextColor3 = Color3.fromRGB(255, 255, 255) Button.BorderSizePixel = 0 local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 6) Corner.Parent = Button return Button end -- AIMLOCK local AimButton = CreateButton( "AimLock: HOLD RMB", UDim2.fromOffset(5, 5), UDim2.new(1, -10, 0, 40) ) -- ESP local ESPButton = CreateButton( "ESP: OFF", UDim2.fromOffset(5, 50), UDim2.new(1, -10, 0, 40) ) -- WALL CHECK local WallButton = CreateButton( "WallCheck: ON", UDim2.fromOffset(5, 95), UDim2.new(1, -10, 0, 40) ) WallButton.BackgroundColor3 = Color3.fromRGB(40, 150, 60) -- FOV local FOVButton = CreateButton( "FOV: ON", UDim2.fromOffset(5, 140), UDim2.new(1, -10, 0, 40) ) FOVButton.BackgroundColor3 = Color3.fromRGB(40, 150, 60) -- КНОПКА ЗАКРЫТИЯ local CloseButton = Instance.new("TextButton") CloseButton.Parent = Panel CloseButton.Size = UDim2.fromOffset(28, 28) CloseButton.Position = UDim2.new(1, -33, 0, 5) CloseButton.Text = "X" CloseButton.TextScaled = true CloseButton.BackgroundColor3 = Color3.fromRGB(180, 50, 50) CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255) CloseButton.BorderSizePixel = 0 local CloseCorner = Instance.new("UICorner") CloseCorner.CornerRadius = UDim.new(0, 6) CloseCorner.Parent = CloseButton -- FOV SLIDER local SliderBackground = Instance.new("Frame") SliderBackground.Parent = Panel SliderBackground.Size = UDim2.new(1, -30, 0, 6) SliderBackground.Position = UDim2.fromOffset(15, 195) SliderBackground.BackgroundColor3 = Color3.fromRGB(100, 100, 100) SliderBackground.BorderSizePixel = 0 local SliderCorner = Instance.new("UICorner") SliderCorner.CornerRadius = UDim.new(1, 0) SliderCorner.Parent = SliderBackground local SliderButton = Instance.new("TextButton") SliderButton.Parent = SliderBackground SliderButton.Size = UDim2.fromOffset(16, 16) SliderButton.AnchorPoint = Vector2.new(0.5, 0.5) local StartPercent = (FOV_RADIUS - MIN_FOV) / (MAX_FOV - MIN_FOV) SliderButton.Position = UDim2.new(StartPercent, 0, 0.5, 0) SliderButton.Text = "" SliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255) SliderButton.BorderSizePixel = 0 SliderButton.AutoButtonColor = false local SliderButtonCorner = Instance.new("UICorner") SliderButtonCorner.CornerRadius = UDim.new(1, 0) SliderButtonCorner.Parent = SliderButton -- ТЕКСТ FOV local FOVLabel = Instance.new("TextLabel") FOVLabel.Parent = Panel FOVLabel.Size = UDim2.new(1, 0, 0, 25) FOVLabel.Position = UDim2.fromOffset(0, 205) FOVLabel.Text = "FOV: " .. FOV_RADIUS FOVLabel.TextScaled = true FOVLabel.BackgroundTransparency = 1 FOVLabel.TextColor3 = Color3.fromRGB(255, 255, 255) -- ПЕРЕТАСКИВАНИЕ ПАНЕЛИ local dragging = false local dragStart local startPos Panel.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = Panel.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) then local delta = input.Position - dragStart Panel.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) -- ЗАКРЫТИЕ ПАНЕЛИ CloseButton.MouseButton1Click:Connect(function() Panel.Visible = false end) -- RIGHT SHIFT ОТКРЫТЬ / ЗАКРЫТЬ UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.KeyCode == Enum.KeyCode.RightShift then Panel.Visible = not Panel.Visible end end) -- FOV КРУГ local FOVCircle = Instance.new("Frame") FOVCircle.Parent = ScreenGui FOVCircle.AnchorPoint = Vector2.new(0.5, 0.5) FOVCircle.BackgroundTransparency = 1 FOVCircle.BorderSizePixel = 0 local CircleCorner = Instance.new("UICorner") CircleCorner.CornerRadius = UDim.new(1, 0) CircleCorner.Parent = FOVCircle local CircleStroke = Instance.new("UIStroke") CircleStroke.Parent = FOVCircle CircleStroke.Thickness = 2 CircleStroke.Color = Color3.fromRGB(255, 255, 255) local function UpdateFOV() FOVCircle.Size = UDim2.fromOffset( FOV_RADIUS * 2, FOV_RADIUS * 2 ) FOVLabel.Text = "FOV: " .. math.floor(FOV_RADIUS) end UpdateFOV() -- SLIDER local sliderDragging = false local function SetSliderFromX(x) local left = SliderBackground.AbsolutePosition.X local width = SliderBackground.AbsoluteSize.X local percent = math.clamp( (x - left) / width, 0, 1 ) FOV_RADIUS = MIN_FOV + (MAX_FOV - MIN_FOV) * percent SliderButton.Position = UDim2.new(percent, 0, 0.5, 0) UpdateFOV() end SliderButton.MouseButton1Down:Connect(function() sliderDragging = true end) SliderBackground.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then sliderDragging = true SetSliderFromX(input.Position.X) end end) UserInputService.InputChanged:Connect(function(input) if sliderDragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) then SetSliderFromX(input.Position.X) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then sliderDragging = false end end) -- AIMLOCK: РАБОТАЕТ ПОКА ЗАЖАТА ПКМ UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.UserInputType == Enum.UserInputType.MouseButton2 then AimLockEnabled = true AimButton.Text = "AimLock: ON" AimButton.BackgroundColor3 = Color3.fromRGB(40, 150, 60) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton2 then AimLockEnabled = false AimButton.Text = "AimLock: HOLD RMB" AimButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) end end) -- ПРОВЕРКА ВИДНОСТИ local function IsVisible(Character, Head) local origin = Camera.CFrame.Position local direction = Head.Position - origin local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.FilterDescendantsInstances = { LocalPlayer.Character } local result = workspace:Raycast(origin, direction, params) if result then return result.Instance:IsDescendantOf(Character) end return false end -- ПОИСК ЦЕЛИ local function GetClosestHead() local closestHead = nil local shortestDistance = math.huge local viewport = Camera.ViewportSize -- Такой же центр, как у круга local screenCenter = Vector2.new( viewport.X / 2, viewport.Y / 2 - 35 ) for _, Player in ipairs(Players:GetPlayers()) do if Player ~= LocalPlayer and Player.Character then local Character = Player.Character local Head = Character:FindFirstChild("Head") local Humanoid = Character:FindFirstChildOfClass("Humanoid") if Head and Humanoid and Humanoid.Health > 0 then local position, onScreen = Camera:WorldToViewportPoint(Head.Position) if onScreen then local screenPosition = Vector2.new(position.X, position.Y) local distance = (screenPosition - screenCenter).Magnitude local insideFOV = true if FOVEnabled then insideFOV = distance <= FOV_RADIUS end if insideFOV then local canAim = true if WallCheckEnabled then canAim = IsVisible(Character, Head) end if canAim and distance < shortestDistance then shortestDistance = distance closestHead = Head end end end end end end return closestHead end -- ESP local function AddESP(Player) if Player == LocalPlayer then return end if not ESPEnabled then return end if not Player.Character then return end if Highlights[Player] then Highlights[Player]:Destroy() end local Highlight = Instance.new("Highlight") Highlight.Name = "PlayerESP" Highlight.Adornee = Player.Character Highlight.FillTransparency = 0.5 Highlight.OutlineTransparency = 0 Highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop Highlight.Parent = Player.Character Highlights[Player] = Highlight end local function RemoveESP(Player) if Highlights[Player] then Highlights[Player]:Destroy() Highlights[Player] = nil end end local function ToggleESP() ESPEnabled = not ESPEnabled if ESPEnabled then ESPButton.Text = "ESP: ON" ESPButton.BackgroundColor3 = Color3.fromRGB(40, 150, 60) for _, Player in ipairs(Players:GetPlayers()) do AddESP(Player) end else ESPButton.Text = "ESP: OFF" ESPButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) for _, Player in ipairs(Players:GetPlayers()) do RemoveESP(Player) end end end ESPButton.MouseButton1Click:Connect(ToggleESP) -- WALL CHECK WallButton.MouseButton1Click:Connect(function() WallCheckEnabled = not WallCheckEnabled if WallCheckEnabled then WallButton.Text = "WallCheck: ON" WallButton.BackgroundColor3 = Color3.fromRGB(40, 150, 60) else WallButton.Text = "WallCheck: OFF" WallButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) end end) -- FOV ON / OFF FOVButton.MouseButton1Click:Connect(function() FOVEnabled = not FOVEnabled if FOVEnabled then FOVButton.Text = "FOV: ON" FOVButton.BackgroundColor3 = Color3.fromRGB(40, 150, 60) FOVCircle.Visible = true SliderBackground.Visible = true SliderButton.Visible = true FOVLabel.Visible = true else FOVButton.Text = "FOV: OFF" FOVButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) FOVCircle.Visible = false SliderBackground.Visible = false SliderButton.Visible = false FOVLabel.Visible = false end end) -- НОВЫЕ ИГРОКИ И РЕСПАВН local function SetupPlayer(Player) if Player == LocalPlayer then return end Player.CharacterAdded:Connect(function() task.wait(0.5) if ESPEnabled then AddESP(Player) end end) end for _, Player in ipairs(Players:GetPlayers()) do SetupPlayer(Player) end Players.PlayerAdded:Connect(SetupPlayer) Players.PlayerRemoving:Connect(function(Player) RemoveESP(Player) end) -- ОСНОВНОЙ ЦИКЛ RunService.RenderStepped:Connect(function() local viewport = Camera.ViewportSize -- КРУГ ЧУТЬ ВЫШЕ ЦЕНТРА FOVCircle.Position = UDim2.fromOffset( viewport.X / 2, viewport.Y / 2 - 35 ) -- AIMLOCK if AimLockEnabled then local Head = GetClosestHead() if Head then Camera.CFrame = CFrame.new( Camera.CFrame.Position, Head.Position ) end end end)