✓ Accepted answer
You can use RemoteEvents as they can transfer data from and to client and server. So if someone presses a button or a script detects if something is visible or not, the RemoteEvent can fire from a local script and a server script will make the player frozen.
Since I don't know much about camera manipulation, a way I would make people stop moving their camera around is make a frame, resize the frame so it covers the whole screen, make it active in properties, then make it transparent if you don't want players to see it. It's not the best way as people can still move their camera with arrow keys and I/O, but they at least can't move it around with their mouse.
Hope this helped, and sorry if I made the answer a little too long. :P
If you need to learn more about RemoteEvents, here's a tutorial about it :
http://wiki.roblox.com/index.php?title=Remote_Events_and_Functions
2 comments
Remote events aren’t required to freeze the character, and you don’t need a frame to stop camera movement.
Oh. I didn't know I could change a player's humanoid properties using a localscript with FE. Thank you! But for the camera part I said I don't know much about camera manipulation, and I didn't say my way was the best way. I'll fix my answer soon.