--ServerScriptService -- Создаем локальную функцию для настройки игрока local function setupPlayer(player) -- Дожидаемся загрузки персонажа player.CharacterAdded:Connect(function(character) -- Блокируем передвижение local humanoid = character:WaitForChild("Humanoid") humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 -- Настройка камеры local camera = game.Workspace.CurrentCamera camera.CameraType = Enum.CameraType.Scriptable local head = character:WaitForChild("Head") local cameraOffset = Vector3.new(0, 1.5, 2) camera.CFrame = CFrame.new(head.Position + cameraOffset, head.Position) -- Добавление эффекта "темнения" local playerGui = player:WaitForChild("PlayerGui") local screenGui = Instance.new("ScreenGui") screenGui.Name = "DarknessEffect" screenGui.Parent = playerGui local frame = Instance.new("Frame") frame.Size = UDim2.new(1, 0, 1, 0) frame.BackgroundColor3 = Color3.new(0, 0, 0) frame.BackgroundTransparency = 1 -- Полностью прозрачный по умолчанию frame.Parent = screenGui -- Отображение подсказки local hint = Instance.new("TextLabel") hint.Text = "Нажмите и удерживайте Q, чтобы начать двигаться." hint.Size = UDim2.new(1, 0, 0.1, 0) hint.Position = UDim2.new(0, 0, 0.9, 0) hint.BackgroundTransparency = 0.5 hint.TextColor3 = Color3.new(1, 1, 1) hint.Parent = screenGui local function enableMovement() humanoid.WalkSpeed = 16 -- Восстановление скорости ходьбы humanoid.JumpPower = 50 -- Восстановление прыжка camera.CameraType = Enum.CameraType.Custom -- Восстановление управления камерой hint:Destroy() -- Удаляем подсказку end -- Функция для темнения с покачиванием камеры local fadeInterval = 15 -- Интервал по умолчанию local function fadeToBlack() for i = 1, 10 do frame.BackgroundTransparency = 1 - (i * 0.1) camera.CFrame = camera.CFrame * CFrame.Angles(0, math.rad(i * 0.5), 0) -- Легкое вращение камеры wait(0.1) end wait(1) -- Затемнение сохраняется 1 секунду for i = 1, 10 do frame.BackgroundTransparency = i * 0.1 camera.CFrame = camera.CFrame * CFrame.Angles(0, -math.rad(i * 0.5), 0) -- Возвращение камеры назад wait(0.1) end end -- Удерживание клавиши Q local userInput = game:GetService("UserInputService") userInput.InputBegan:Connect(function(input, gameProcessed) if input.KeyCode == Enum.KeyCode.Q and not gameProcessed then enableMovement() fadeInterval = 10 -- Изменение интервала end end) -- Таймер для эффекта while true do wait(fadeInterval) fadeToBlack() end end) end -- Применяем настройки ко всем текущим и новым игрокам game.Players.PlayerAdded:Connect(setupPlayer) -- Для уже присутствующих на сервере игроков for _, player in pairs(game.Players:GetPlayers()) do setupPlayer(player) end