-- Скрипт для ServerScriptService или StarterPlayerScripts
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- Создание GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "NoClipGUI"
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = player.PlayerGui
-- Основной фрейм
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 200, 0, 120)
mainFrame.Position = UDim2.new(0, 10, 0, 10)
mainFrame.BackgroundColor3 = Color3.new(0, 0, 0)
mainFrame.BorderSizePixel = 2
mainFrame.BorderColor3 = Color3.new(1, 0.5, 0)
mainFrame.Active = true
mainFrame.Draggable = false -- Мы реализуем перетаскивание самостоятельно
mainFrame.Parent = screenGui
-- Заголовок
local titleLabel = Instance.new("TextLabel")
titleLabel.Name = "TitleLabel"
titleLabel.Size = UDim2.new(1, 0, 0, 30)
titleLabel.Position = UDim2.new(0, 0, 0, 0)
titleLabel.BackgroundColor3 = Color3.new(0, 0, 0)
titleLabel.BorderSizePixel = 0
titleLabel.Text = "QJL RbxScripts"
titleLabel.TextColor3 = Color3.new(1, 0.5, 0)
titleLabel.TextScaled = true
titleLabel.Font = Enum.Font.GothamBold
titleLabel.Parent = mainFrame
-- Кнопка NoClip
local noClipButton = Instance.new("TextButton")
noClipButton.Name = "NoClipButton"
noClipButton.Size = UDim2.new(0.8, 0, 0, 40)
noClipButton.Position = UDim2.new(0.1, 0, 0.4, 0)
noClipButton.BackgroundColor3 = Color3.new(1, 0.5, 0)
noClipButton.BorderSizePixel = 0
noClipButton.Text = "NOCLIP OFF"
noClipButton.TextColor3 = Color3.new(0, 0, 0)
noClipButton.TextScaled = true
noClipButton.Font = Enum.Font.GothamBold
noClipButton.Parent = mainFrame
-- Переменные для состояния
local noClipEnabled = false
local noClipConnection = nil
local isDragging = false
local dragStart = nil
local frameStart = nil
-- Функция для перетаскивания GUI
local function onInputBegan(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
local mousePos = input.Position
local framePos = mainFrame.AbsolutePosition
local frameSize = mainFrame.AbsoluteSize
-- Проверяем, находится ли клик внутри фрейма
if mousePos.X >= framePos.X and mousePos.X <= framePos.X + frameSize.X and
mousePos.Y >= framePos.Y and mousePos.Y <= framePos.Y + frameSize.Y then
isDragging = true
dragStart = mousePos
frameStart = mainFrame.Position
-- Визуальная обратная связь при перетаскивании
local tween = TweenService:Create(mainFrame, TweenInfo.new(0.1), {BackgroundColor3 = Color3.new(0.1, 0.1, 0.1)})
tween:Play()
end
end
end
local function onInputChanged(input, gameProcessed)
if gameProcessed then return end
if isDragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
local newPosition = UDim2.new(
frameStart.X.Scale,
frameStart.X.Offset + delta.X,
frameStart.Y.Scale,
frameStart.Y.Offset + delta.Y
)
mainFrame.Position = newPosition
end
end
local function onInputEnded(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
if isDragging then
isDragging = false
-- Возвращаем обычный цвет
local tween = TweenService:Create(mainFrame, TweenInfo.new(0.1), {BackgroundColor3 = Color3.new(0, 0, 0)})
tween:Play()
end
end
end
-- Подключаем обработчики для перетаскивания
UserInputService.InputBegan:Connect(onInputBegan)
UserInputService.InputChanged:Connect(onInputChanged)
UserInputService.InputEnded:Connect(onInputEnded)
-- Функция NoClip
local function updateNoClip()
if character and humanoid then
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide then
part.CanCollide = not noClipEnabled
end
end
end
end
-- Обработчик переключения NoClip
noClipButton.MouseButton1Click:Connect(function()
noClipEnabled = not noClipEnabled
if noClipEnabled then
noClipButton.Text = "NOCLIP ON"
-- Анимация при включении
local tween = TweenService:Create(noClipButton, TweenInfo.new(0.2), {BackgroundColor3 = Color3.new(0, 1, 0)})
tween:Play()
else
noClipButton.Text = "NOCLIP OFF"
-- Возвращаем оранжевый цвет
local tween = TweenService:Create(noClipButton, TweenInfo.new(0.2), {BackgroundColor3 = Color3.new(1, 0.5, 0)})
tween:Play()
end
updateNoClip()
end)
-- Постоянное обновление NoClip (на случай респавна персонажа)
if noClipConnection then
noClipConnection:Disconnect()
end
noClipConnection = RunService.Stepped:Connect(function()
if noClipEnabled and character then
updateNoClip()
end
end)
-- Обработчик респавна персонажа
player.CharacterAdded:Connect(function(newCharacter)
character = newCharacter
humanoid = character:WaitForChild("Humanoid")
-- Сбрасываем NoClip при респавне
if noClipEnabled then
noClipEnabled = false
noClipButton.Text = "NOCLIP OFF"
local tween = TweenService:Create(noClipButton, TweenInfo.new(0.2), {BackgroundColor3 = Color3.new(1, 0.5, 0)})
tween:Play()
end
end)
-- Анимация появления
mainFrame.Size = UDim2.new(0, 0, 0, 0)
local appearTween = TweenService:Create(mainFrame, TweenInfo.new(0.5), {Size = UDim2.new(0, 200, 0, 120)})
appearTween:Play()
print("NoClip GUI загружен! Перетаскивайте окно для перемещения.")