-- Press Left CTRL -- Made By Antagonist local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local camera = workspace.CurrentCamera -- Configuration Constants local SHIFTLOCK_OFFSET = Vector3.new(1.75, 0, 0) local CAMERA_DISTANCE_BUFFER = 0.5 local ROTATION_SPEED = 1 -- State Management local shiftLockEnabled = false local cameraConnection = nil -- Utility: Get Character Components local function getCharacterComponents() local character = player.Character if not character then return nil end local humanoid = character:FindFirstChildOfClass("Humanoid") local rootPart = character:FindFirstChild("HumanoidRootPart") if not humanoid or not rootPart then return nil end return { character = character, humanoid = humanoid, rootPart = rootPart } end -- Core: Apply Shiftlock Camera and Character Rotation local function applyShiftLock() local components = getCharacterComponents() if not components then return end local rootPart = components.rootPart local humanoid = components.humanoid -- Lock mouse to center UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter -- Get camera look direction (ignore Y axis for horizontal rotation) local cameraLookVector = camera.CFrame.LookVector local horizontalLook = Vector3.new(cameraLookVector.X, 0, cameraLookVector.Z) -- Rotate character to face camera direction EXACTLY if horizontalLook.Magnitude > 0 then local targetCFrame = CFrame.new(rootPart.Position, rootPart.Position + horizontalLook) rootPart.CFrame = rootPart.CFrame:Lerp(targetCFrame, ROTATION_SPEED) end -- Apply shoulder offset to camera local offsetCFrame = CFrame.new(SHIFTLOCK_OFFSET) camera.CFrame = camera.CFrame * offsetCFrame end -- Core: Disable Shiftlock local function disableShiftLock() shiftLockEnabled = false UserInputService.MouseBehavior = Enum.MouseBehavior.Default if cameraConnection then cameraConnection:Disconnect() cameraConnection = nil end end -- Core: Enable Shiftlock local function enableShiftLock() shiftLockEnabled = true -- Connect to RenderStepped for frame-perfect updates if cameraConnection then cameraConnection:Disconnect() end cameraConnection = RunService.RenderStepped:Connect(function() if not shiftLockEnabled then return end applyShiftLock() end) end -- Core: Toggle Shiftlock State local function toggleShiftLock() if shiftLockEnabled then disableShiftLock() else enableShiftLock() end end -- Input Handler: CTRL Key Detection UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end -- Accept both Left and Right Control keys if input.KeyCode == Enum.KeyCode.LeftControl or input.KeyCode == Enum.KeyCode.RightControl then toggleShiftLock() end end) -- Lifecycle: Handle Character Respawn player.CharacterAdded:Connect(function(character) disableShiftLock() -- Wait for character to fully load character:WaitForChild("HumanoidRootPart") character:WaitForChild("Humanoid") end) -- Lifecycle: Cleanup on Script Destruction game:GetService("Players").PlayerRemoving:Connect(function(removingPlayer) if removingPlayer == player then disableShiftLock() end end) -- Initialization print("Made By Antagonist. lol") print("[SHIFTLOCK] Press CTRL to toggle shiftlock")