For the zooming problem, there seems to be a bug with the MouseMoveZ() command, instead, use MouseZ() to find your own value, you should use something like this each loop:
NewZ = MouseZ()
MovedZ = NewZ - OldZ
OldZ = MouseZ()
Then you can zoom in by the amount held in 'MovedZ', so something like this would work:
Also fiddle with the 'Set Camera FOV' command, it can give some great effects for zooming in as it gives a 'Fish eye' look to the world. When zoomed in you should probably set the FOV to a lower value and when zoomed out you should set it back to the normal value (Around 90 I think).
"Computers are useless they can only give you answers."