EDIT: Dang you bet me to the answer!
I know this is a dumb question but are killing the while(1) ... loops when you change cameras. Why does each camera function have a loop. Try this I didn't test it.
Malice
function camera_1stperson()
{
camera.x = my.x + 11 * cos(my.pan);
camera.y = my.y + 11 * sin(my.pan);
camera.z = my.z + 25;
camera.pan = my.pan;
camera.tilt += (key_pgup-key_pgdn)*5*time_step;
if(key_home)
{camera.tilt = 0;}
camera.roll = 0;
}
function camera_3rdperson()
{
camera.x = my.x - 150 * cos(my.pan);
camera.y = my.y - 150 * sin(my.pan);
camera.z = my.z + 50;
camera.pan = my.pan;
camera.tilt = -13;
camera.roll = 0;
}
function camera_3rdperson2()
{
camera.x = my.x - 250 * cos(my.pan);
camera.y = my.y - 250 * sin(my.pan);
camera.z = my.z + 200;
camera.pan = my.pan;
camera.tilt = -25;
camera.roll = 0;
}
function select_cameras()
{
var iCam_Mode=0;
while(1)
{
if(key_7)
{iCam_mode=1;}
if(key_8)
{iCam_mode=2;}
if(key_9)
{iCam_mode=3;}
if(iCam_Mode==1)
{camera_1stperson();}
if(iCam_Mode ==2)
{camera_3rdperson();}
if(iCam_Mode==3)
{camera_3rdperson2();}
wait(1);
}
}