Загрузка данных


local userInputService = game:GetService("UserInputService")
local runService = game:GetService("RunService")
local player = game:GetService("Players").LocalPlayer
local camera = workspace.CurrentCamera

local isMouseFree = false
local isRightMouseDown = false

-- Функция переключения режима мыши
local function toggleMouse()
    isMouseFree = not isMouseFree
    
    if isMouseFree then
        -- Разблокируем мышь, чтобы можно было кликать по интерфейсу
        userInputService.MouseBehavior = Enum.MouseBehavior.Default
        userInputService.MouseIconEnabled = true
        print("Мышь разблокирована (нажми V снова, чтобы вернуть управление)")
    else
        -- Возвращаем стандартный режим управления камерой от первого/третьего лица
        userInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
        userInputService.MouseIconEnabled = false
        isRightMouseDown = false
        print("Управление камерой возвращено")
    end
end

-- Отслеживаем нажатие клавиши V
userInputService.InputBegan:Connect(function(input, gameProcessed)
    -- Игнорируем, если игрок пишет что-то в чате
    if gameProcessed then return end
    
    if input.KeyCode == Enum.KeyCode.V then
        toggleMouse()
    end
    
    -- Следим за зажатием правой кнопки мыши
    if input.UserInputType == Enum.UserInputType.MouseButton2 and isMouseFree then
        isRightMouseDown = true
        -- Пока ПКМ зажата — крутим камеру мышкой
        userInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
    end
end)

-- Отслеживаем отпускание правой кнопки мыши
userInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton2 and isMouseFree then
        isRightMouseDown = false
        -- Отпустил ПКМ — курсор снова свободно ходит по экрану
        userInputService.MouseBehavior = Enum.MouseBehavior.Default
    end
end)