Well I guess those issues could be solved If I was a better scripter. Plus the annoying bug is related to keyboard controls. GTA3 is horrible if you're supposed to move the camera just via keyboard, yes classic controls is a thing, but you have auto-aim there. Now as for that spectating script, it relies just on bound keys to move the camera, and there was no other way at the time, since mouse functions have been added with the 0.15 update.
- Scripting - Added mouse movement/button related events to scripts - onClientMouseMove( short x, short y ), onclientMouseClick( int button, bool down, short x, short y ), onClientMouseWheel( bool moved )
- Scripting - Added scripting/gui lib functions to get/set mouse cursor position (client) - VectorScreen GetMouseCursorPos( void ), SetMouseCursorPos( VectorScreen pos )
In theory it's not hard to be realized, you need to detect mouse movement in 2D and then move the camera in 3D accordingly. There are several pages you can find about that on the web, most results I got were Unity Engine topics. However you won't see me releasing such a script, for the reasons I stated in my previous post.