Alright, so what I'm trying to do is lock camera and move it only when server fires you with CFrame. Script is obviously client-sided.
My code so far:
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable -- does not lock the camera
workspace.MoveCamera.OnClientEvent:Connect(function(cframe)
camera.CFrame = cframe -- that moves the camera, but doesn't change zoom and player still can move camera afterwards
)
Problems are written in comments, but I'll repeat
- Enum.CameraType.Scriptable does not lock the camera
- Setting CFrame moves camera, but doesn't affect zoom and player still can move camera after that

2 comments
Try setting it on the server
workspace.CurrentCamera can only be accessed on client-side scripts