-- Настройки аимлока
local Settings = {
Key = Enum.KeyCode.X, -- Клавиша для зажатия
TargetPart = "Head" -- Куда целиться ("Head" или "HumanoidRootPart")
}
-- Сервисы игры
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local Camera = workspace.CurrentCamera
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
-- Переменные состояния
local IsHoldingKey = false
local CurrentTarget = nil
-- Функция поиска БЛИЖАЙШЕГО к прицелу игрока (вызывается только один раз в момент нажатия)
local function GetClosestPlayerToMouse()
local ClosestTarget = nil
local MaxDistance = math.huge -- Ищет по всему экрану без ограничений FOV
for _, player in ipairs(Players:GetPlayers()) do
if player ~= LocalPlayer and player.Character then
local Character = player.Character
local TargetPart = Character:FindFirstChild(Settings.TargetPart)
local Humanoid = Character:FindFirstChildOfClass("Humanoid")
-- Проверка: жив ли игрок
if TargetPart and Humanoid and Humanoid.Health > 0 then
local ScreenPosition, OnScreen = Camera:WorldToViewportPoint(TargetPart.Position)
if OnScreen then
local MousePosition = Vector2.new(Mouse.X, Mouse.Y)
local Distance = (Vector2.new(ScreenPosition.X, ScreenPosition.Y) - MousePosition).Magnitude
-- Находим того, кто ближе всего к центру экрана/курсору
if Distance < MaxDistance then
MaxDistance = Distance
ClosestTarget = TargetPart
end
end
end
end
end
return ClosestTarget
end
-- Отслеживание нажатия клавиши X
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Settings.Key then
IsHoldingKey = true
-- Выбираем цель ОДИН раз в момент зажатия кнопки
CurrentTarget = GetClosestPlayerToMouse()
end
end)
-- Отслеживание отпускания клавиши X
UserInputService.InputEnded:Connect(function(input)
if input.KeyCode == Settings.Key then
IsHoldingKey = false
CurrentTarget = nil -- Сбрасываем цель при отпускании
end
end)
-- Основной цикл наводки
RunService.RenderStepped:Connect(function()
if IsHoldingKey and CurrentTarget then
-- Проверяем, существует ли еще цель и жив ли персонаж
if CurrentTarget.Parent and CurrentTarget.Parent:FindFirstChildOfClass("Humanoid") then
local Humanoid = CurrentTarget.Parent:FindFirstChildOfClass("Humanoid")
if Humanoid.Health > 0 then
-- Жестко удерживаем камеру на выбранной цели
Camera.CFrame = CFrame.new(Camera.CFrame.Position, CurrentTarget.Position)
else
-- Если цель умерла пока мы держали кнопку, сбрасываем её
CurrentTarget = nil
end
else
-- Если цель вышла из игры или деспавнилась
CurrentTarget = nil
end
end
end)