vector firstbeacon=<31.43279, 67.92267, 20.200>;
vector nexbecon;
float time;
integer on=0;
integer listening=1;
default
{
state_entry()
{
llListen(0,"","","cruise"

;
llListen(10,"","",""

;
llListen(110,"end becon","","end"

;
llSetStatus(STATUS_ROTATE_Z, FALSE);
llSetStatus(STATUS_ROTATE_X, FALSE);
llSetStatus(STATUS_ROTATE_Y, TRUE);
llSetStatus(STATUS_PHYSICS, FALSE);
llSetBuoyancy(1.0);
llStopLookAt();
}
on_rez(integer param)
{
llResetScript();
}
listen (integer channel, string name, key id, string msg)
{
if(listening==0)return;
if(channel==0)
{
on=1;
llSetStatus(STATUS_ROTATE_Z, FALSE);
llSetStatus(STATUS_ROTATE_X, FALSE);
llSetStatus(STATUS_ROTATE_Y, TRUE);
llSetStatus(STATUS_PHYSICS, TRUE);
llSetBuoyancy(1.0);
llWhisper(0,"starting cruise all abord"

;
llMoveToTarget(firstbeacon,2);
//llLookAt(nexbecon,0.6,1);
llSetTimerEvent(1);
listening=0;
}
else if(channel==10)
{
time=(float)llGetSubString(msg,0,4);
nexbecon=(vector)llGetSubString(msg,6,llStringLength(msg));
llMoveToTarget(nexbecon,time);
llLookAt(nexbecon,0.6,1);
listening=0;
llSetTimerEvent(1);
}
else
{
on=0;
llStopLookAt();
llSetStatus(STATUS_PHYSICS, FALSE);
llWhisper(0,"cruise over pls disembark"

;
llResetScript();
}
}
timer()
{
llSetBuoyancy(1.0);
listening=1;
llMoveToTarget(nexbecon,time);
llSetTimerEvent(0);
}
}