Загрузка данных
-- Скрипт: Плавное следование к игроку tiaufs2 с Noclip
-- Каждые 5 секунд персонаж плавно двигается к цели
-- При достижении цели Noclip отключается
-- Работает после респавна
local player = game.Players.LocalPlayer
local TARGET_USERNAME = "tiaufs2" -- Имя целевого игрока
local MOVE_INTERVAL = 5 -- Интервал между перемещениями (секунды)
local MOVE_DURATION = 1.5 -- Длительность перемещения (секунды)
local targetPlayer = nil
local isMoving = false
local noclipEnabled = false
local noclipConnection = nil
local moveConnection = nil
local character = nil
local hrp = nil
-- Функция для поиска целевого игрока
local function findTargetPlayer()
for _, plr in ipairs(game.Players:GetPlayers()) do
if string.lower(plr.Name) == string.lower(TARGET_USERNAME) then
return plr
end
end
return nil
end
-- Функция включения Noclip
local function enableNoclip()
if noclipEnabled then return end
noclipEnabled = true
-- Отключаем коллизии для всех частей персонажа
local function disableCollisions(char)
if not char then return end
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
-- Включаем ноклип для текущего персонажа
if character then
disableCollisions(character)
end
-- Подключаем событие на новые части
if noclipConnection then
noclipConnection:Disconnect()
end
noclipConnection = game:GetService("RunService").RenderStepped:Connect(function()
if not character then return end
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide == true then
part.CanCollide = false
end
end
end)
print("[NOCLIP] Включён")
end
-- Функция отключения Noclip
local function disableNoclip()
if not noclipEnabled then return end
noclipEnabled = false
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
-- Восстанавливаем коллизии для всех частей персонажа
if character then
for _, part in ipairs(character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
end
print("[NOCLIP] Отключён")
end
-- Функция плавного перемещения к цели
local function moveToTarget()
if isMoving then return end
if not character or not hrp then return end
-- Обновляем цель
targetPlayer = findTargetPlayer()
if not targetPlayer then
print("[ОШИБКА] Игрок " .. TARGET_USERNAME .. " не найден!")
return
end
local targetChar = targetPlayer.Character
if not targetChar then
print("[ОШИБКА] У игрока " .. TARGET_USERNAME .. " нет персонажа!")
return
end
local targetHRP = targetChar:FindFirstChild("HumanoidRootPart")
if not targetHRP then
print("[ОШИБКА] У цели нет HumanoidRootPart!")
return
end
-- Включаем Noclip перед движением
enableNoclip()
isMoving = true
-- Получаем текущую позицию и позицию цели
local startPos = hrp.Position
local targetPos = targetHRP.Position + Vector3.new(0, 3, 0) -- Немного выше, чтобы не застрять
-- Создаём Tween для плавного перемещения
local tweenInfo = TweenInfo.new(
MOVE_DURATION, -- Время перемещения
Enum.EasingStyle.Linear, -- Тип анимации (линейный для равномерного движения)
Enum.EasingDirection.Out
)
local tween = game:GetService("TweenService"):Create(hrp, tweenInfo, {
CFrame = CFrame.new(targetPos)
})
tween:Play()
-- Ждём завершения движения
tween.Completed:Wait()
isMoving = false
-- Отключаем Noclip после достижения цели
disableNoclip()
print("[ДВИЖЕНИЕ] Достигнут игрок: " .. targetPlayer.Name)
end
-- Функция обновления персонажа
local function setupCharacter(newChar)
character = newChar
hrp = character:WaitForChild("HumanoidRootPart")
-- Если Noclip был включён, восстанавливаем его
if noclipEnabled then
enableNoclip()
end
print("[СИСТЕМА] Персонаж обновлён")
end
-- Функция запуска цикла перемещения
local function startMovementLoop()
if moveConnection then
moveConnection:Disconnect()
end
-- Запускаем бесконечный цикл
moveConnection = game:GetService("RunService").Heartbeat:Connect(function()
-- Ждём, пока персонаж загрузится
if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
return
end
-- Проверяем, не двигаемся ли мы уже
if isMoving then return end
-- Запускаем перемещение
moveToTarget()
-- Ждём интервал перед следующим перемещением
task.wait(MOVE_INTERVAL)
end)
end
-- Инициализация
local function init()
-- Проверяем, есть ли персонаж
character = player.Character
if character then
hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
-- Ждём загрузки
task.wait(1)
-- Запускаем цикл
startMovementLoop()
end
end
-- Подписываемся на событие респавна
player.CharacterAdded:Connect(function(newChar)
task.wait(0.5) -- Ждём загрузки
setupCharacter(newChar)
-- Если цикл не запущен, запускаем
if not moveConnection then
startMovementLoop()
end
end)
end
-- Запуск
init()
print("========================================")
print("[СЛЕДОВАНИЕ] Скрипт активирован!")
print("Цель: " .. TARGET_USERNAME)
print("Интервал: " .. MOVE_INTERVAL .. " секунд")
print("Noclip включается во время движения")
print("========================================")
-- Горячая клавиша для ручного перезапуска (R)
game:GetService("UserInputService").InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.R then
print("[СИСТЕМА] Ручной перезапуск...")
if moveConnection then
moveConnection:Disconnect()
moveConnection = nil
end
disableNoclip()
isMoving = false
task.wait(0.5)
startMovementLoop()
print("[СИСТЕМА] Перезапущено!")
end
end)
-- Остановка при нажатии на X (аварийная остановка)
game:GetService("UserInputService").InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.X then
print("[СИСТЕМА] Аварийная остановка!")
if moveConnection then
moveConnection:Disconnect()
moveConnection = nil
end
disableNoclip()
isMoving = false
print("[СИСТЕМА] Остановлено. Нажмите R для перезапуска.")
end
end)