local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local CoreGui = game:GetService("CoreGui") local player = Players.LocalPlayer local character = player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local humanoidRootPart = character:WaitForChild("HumanoidRootPart") -- Настройки по умолчанию local Settings = { button_dash_y = Enum.KeyCode.G, button_dash_x = Enum.KeyCode.F, menu_key = Enum.KeyCode.Insert, custom_vector = false, vector_x = 0, vector_y = 200, vector_z = 0, dash_distance = 50, dash_time = 0.1, cooldown_time = 0.1, enabled = true } -- Создаем кубик GUI (индикатор позиции) local screenGui = Instance.new("ScreenGui") screenGui.Name = "ParkourCheatCube" screenGui.Parent = CoreGui -- Основной кубик-индикатор local cube = Instance.new("Frame") cube.Size = UDim2.new(0, 20, 0, 20) cube.Position = UDim2.new(0, 10, 0, 10) cube.BackgroundColor3 = Color3.fromRGB(0, 170, 255) cube.BorderSizePixel = 1 cube.BorderColor3 = Color3.fromRGB(255, 255, 255) cube.BackgroundTransparency = 0.3 cube.Parent = screenGui -- Делаем кубик круглым local UICorner = Instance.new("UICorner") UICorner.CornerRadius = UDim.new(1, 0) UICorner.Parent = cube -- Развернутый интерфейс (скрыт по умолчанию) local expandedFrame = Instance.new("Frame") expandedFrame.Size = UDim2.new(0, 250, 0, 300) expandedFrame.Position = UDim2.new(0, cube.Position.X.Offset + 25, 0, cube.Position.Y.Offset) expandedFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) expandedFrame.BorderSizePixel = 2 expandedFrame.BorderColor3 = Color3.fromRGB(0, 170, 255) expandedFrame.Visible = false expandedFrame.Parent = screenGui -- Заголовок развернутого окна local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 40) title.Position = UDim2.new(0, 0, 0, 0) title.BackgroundColor3 = Color3.fromRGB(30, 30, 30) title.Text = "Parkour Legacy Cheat" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextSize = 16 title.Font = Enum.Font.GothamBold title.Parent = expandedFrame -- Кнопка закрытия local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 30, 0, 30) closeBtn.Position = UDim2.new(1, -35, 0, 5) closeBtn.BackgroundColor3 = Color3.fromRGB(170, 0, 0) closeBtn.Text = "X" closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) closeBtn.TextSize = 14 closeBtn.Parent = expandedFrame closeBtn.MouseButton1Click:Connect(function() expandedFrame.Visible = false end) -- Контейнер для настроек local settingsFrame = Instance.new("Frame") settingsFrame.Size = UDim2.new(1, -20, 1, -50) settingsFrame.Position = UDim2.new(0, 10, 0, 50) settingsFrame.BackgroundTransparency = 1 settingsFrame.Parent = expandedFrame -- Функция для создания элементов настроек local function createSetting(labelText, yPosition, settingType, settingKey) local frame = Instance.new("Frame") frame.Size = UDim2.new(1, 0, 0, 30) frame.Position = UDim2.new(0, 0, 0, yPosition) frame.BackgroundTransparency = 1 frame.Parent = settingsFrame local label = Instance.new("TextLabel") label.Size = UDim2.new(0.5, 0, 1, 0) label.Position = UDim2.new(0, 0, 0, 0) label.BackgroundTransparency = 1 label.Text = labelText label.TextColor3 = Color3.fromRGB(255, 255, 255) label.TextSize = 14 label.TextXAlignment = Enum.TextXAlignment.Left label.Parent = frame if settingType == "toggle" then local toggle = Instance.new("TextButton") toggle.Size = UDim2.new(0, 50, 0, 25) toggle.Position = UDim2.new(0.5, 0, 0, 2) toggle.BackgroundColor3 = Settings[settingKey] and Color3.fromRGB(0, 170, 0) or Color3.fromRGB(170, 0, 0) toggle.Text = Settings[settingKey] and "ON" or "OFF" toggle.TextColor3 = Color3.fromRGB(255, 255, 255) toggle.TextSize = 12 toggle.Parent = frame toggle.MouseButton1Click:Connect(function() Settings[settingKey] = not Settings[settingKey] toggle.BackgroundColor3 = Settings[settingKey] and Color3.fromRGB(0, 170, 0) or Color3.fromRGB(170, 0, 0) toggle.Text = Settings[settingKey] and "ON" or "OFF" end) elseif settingType == "slider" then local valueLabel = Instance.new("TextLabel") valueLabel.Size = UDim2.new(0, 60, 1, 0) valueLabel.Position = UDim2.new(0.5, 0, 0, 0) valueLabel.BackgroundTransparency = 1 valueLabel.Text = tostring(Settings[settingKey]) valueLabel.TextColor3 = Color3.fromRGB(255, 255, 255) valueLabel.TextSize = 14 valueLabel.Parent = frame local slider = Instance.new("TextBox") slider.Size = UDim2.new(0, 80, 0, 25) slider.Position = UDim2.new(0.7, 0, 0, 2) slider.BackgroundColor3 = Color3.fromRGB(60, 60, 60) slider.Text = tostring(Settings[settingKey]) slider.TextColor3 = Color3.fromRGB(255, 255, 255) slider.TextSize = 12 slider.PlaceholderText = "Value" slider.Parent = frame slider.FocusLost:Connect(function() local num = tonumber(slider.Text) if num then Settings[settingKey] = num valueLabel.Text = tostring(num) else slider.Text = tostring(Settings[settingKey]) end end) end return frame end -- Создаем настройки local yPos = 0 createSetting("Включить читы", yPos, "toggle", "enabled"); yPos = yPos + 35 createSetting("Дистанция рывка", yPos, "slider", "dash_distance"); yPos = yPos + 35 createSetting("Время рывка", yPos, "slider", "dash_time"); yPos = yPos + 35 createSetting("Перезарядка", yPos, "slider", "cooldown_time"); yPos = yPos + 35 createSetting("Вектор X", yPos, "slider", "vector_x"); yPos = yPos + 35 createSetting("Вектор Y", yPos, "slider", "vector_y"); yPos = yPos + 35 createSetting("Вектор Z", yPos, "slider", "vector_z"); yPos = yPos + 35 -- Кнопка сброса настроек local resetBtn = Instance.new("TextButton") resetBtn.Size = UDim2.new(1, 0, 0, 30) resetBtn.Position = UDim2.new(0, 0, 1, -40) resetBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) resetBtn.Text = "Сбросить настройки" resetBtn.TextColor3 = Color3.fromRGB(255, 255, 255) resetBtn.TextSize = 14 resetBtn.Parent = settingsFrame resetBtn.MouseButton1Click:Connect(function() Settings.dash_distance = 50 Settings.dash_time = 0.1 Settings.cooldown_time = 0.1 Settings.vector_x = 0 Settings.vector_y = 200 Settings.vector_z = 0 -- Обновляем UI for i, child in pairs(settingsFrame:GetChildren()) do if child:IsA("Frame") then child:Destroy() end end local newYPos = 0 createSetting("Включить читы", newYPos, "toggle", "enabled"); newYPos = newYPos + 35 createSetting("Дистанция рывка", newYPos, "slider", "dash_distance"); newYPos = newYPos + 35 createSetting("Время рывка", newYPos, "slider", "dash_time"); newYPos = newYPos + 35 createSetting("Перезарядка", newYPos, "slider", "cooldown_time"); newYPos = newYPos + 35 createSetting("Вектор X", newYPos, "slider", "vector_x"); newYPos = newYPos + 35 createSetting("Вектор Y", newYPos, "slider", "vector_y"); newYPos = newYPos + 35 createSetting("Вектор Z", newYPos, "slider", "vector_z"); newYPos = newYPos + 35 end) -- Перетаскивание кубика local dragging = false local dragInput local dragStart local startPos local function update(input) local delta = input.Position - dragStart cube.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) -- Обновляем позицию меню когда оно открыто if expandedFrame.Visible then expandedFrame.Position = UDim2.new(0, cube.Position.X.Offset + 25, 0, cube.Position.Y.Offset) end end cube.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = cube.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) cube.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then update(input) end end) -- Функция открытия/закрытия меню по Insert local function toggleMenu() expandedFrame.Visible = not expandedFrame.Visible if expandedFrame.Visible then -- Обновляем позицию меню относительно кубика expandedFrame.Position = UDim2.new(0, cube.Position.X.Offset + 25, 0, cube.Position.Y.Offset) end end -- ОТДЕЛЬНЫЙ обработчик для меню UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Settings.menu_key then toggleMenu() end end) -- Motion Blur local blur = Instance.new("BlurEffect") blur.Size = 0 blur.Parent = Lighting -- Автоматическое восстановление после смерти player.CharacterAdded:Connect(function(newCharacter) character = newCharacter humanoid = character:WaitForChild("Humanoid") humanoidRootPart = character:WaitForChild("HumanoidRootPart") dashing = false dashCooldown = false blur.Size = 0 end) -- Trail Setup local function addTrail() local trail = Instance.new("Trail") trail.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(0, 255, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(0, 255, 0)) } trail.Lifetime = 0.2 trail.MinLength = 0.1 trail.WidthScale = NumberSequence.new(1) local a0 = Instance.new("Attachment", humanoidRootPart) local a1 = Instance.new("Attachment", humanoidRootPart) a0.Position = Vector3.new(0, 1, 0) a1.Position = Vector3.new(0, -1, 0) trail.Attachment0 = a0 trail.Attachment1 = a1 trail.Parent = humanoidRootPart return trail end -- Dash Function local dashing = false local dashCooldown = false local function dash(type) if not Settings.enabled or dashing or dashCooldown or humanoid.Health <= 0 then return end dashing = true dashCooldown = true blur.Size = 25 local trail = addTrail() local direction = humanoidRootPart.CFrame.LookVector local startTime = tick() local connection connection = RunService.Heartbeat:Connect(function() local elapsed = tick() - startTime if elapsed >= Settings.dash_time or humanoid.Health <= 0 then if Settings.custom_vector then humanoidRootPart.Velocity = Vector3.new(Settings.vector_x, Settings.vector_y, Settings.vector_z) else if type == "x" then humanoidRootPart.Velocity = Vector3.new(0, 0, 0) elseif type == "y" then humanoidRootPart.Velocity = Vector3.new(0, 200, 0) end end connection:Disconnect() dashing = false blur.Size = 0 if trail then trail:Destroy() end task.delay(Settings.cooldown_time, function() dashCooldown = false end) return end if type == "x" then humanoidRootPart.Velocity = direction * (Settings.dash_distance / Settings.dash_time) end end) end -- ОТДЕЛЬНЫЙ обработчик для рывков (старый код) UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Settings.button_dash_x then dash("x") elseif input.KeyCode == Settings.button_dash_y then dash("y") end end) -- Очистка при выходе game:GetService("CoreGui").DescendantRemoving:Connect(function(descendant) if descendant == player then blur:Destroy() screenGui:Destroy() end end) -- Информация в консоль print("Parkour Legacy Cheat loaded!") print("Press INSERT to open/close menu") print("Press F for forward dash, G for upward dash") print("Drag the blue circle to move menu position")