any ideas why this is?
CODE
vector target=<42,34,378>;
default
{
state_entry()
{
llSetStatus(STATUS_ROTATE_Y,FALSE);
llSetStatus(STATUS_ROTATE_Z,TRUE);
llSetBuoyancy(.1);
llSetVehicleType(VEHICLE_TYPE_AIRPLANE);
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <55.0, 55.0, 500.0>);
llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 600.0);
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <400.0, 5.0, 5000.0>);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 1);
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, <PI, PI, PI/25>);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, .5);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, .5);
llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 310.0) ;
llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 370.0);
llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, .10);
llSetVehicleFloatParam(VEHICLE_BUOYANCY, 1.5);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.0);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.0);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 0.0);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.0);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 10.0);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.25);
llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 1.0);
llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 1.0) ;
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, .1);
llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, <0.0, 0.0, 0.0, 1.0>);
llRemoveVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP
| VEHICLE_FLAG_HOVER_WATER_ONLY
| VEHICLE_FLAG_HOVER_TERRAIN_ONLY
| VEHICLE_FLAG_LIMIT_MOTOR_UP
|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT ) ;
llSetTimerEvent(.25);
}
timer()
{
vector linear;
vector angular;
integer direction;
vector mypos=llGetPos();
vector mydir=llRot2Fwd(llGetRot());
vector tardir=llVecNorm(target-mypos);
rotation test=llRotBetween(mydir,tardir);
float dist=llVecDist(target,mypos);
float planardist=llSqrt((target.x-mypos.x)*(target.x-mypos.x)+(target.y - mypos.y)*(target.y - mypos.y));
if (mypos.x <2 || mypos.y <2 || mypos.x >253 ||mypos.y > 253)
{
llSetStatus(STATUS_PHYSICS,FALSE);
llSleep(.2);
if(mypos.x <2)
{
llSetPos(<3,mypos.y,mypos.z>);
}
if(mypos.y <2)
{
llSetPos(<mypos.x,3,mypos.z>);
}
if(mypos.x >253)
{
llSetPos(<252,mypos.y,mypos.z>);
}
if(mypos.y >253)
{
llSetPos(<mypos.x,252,mypos.z>);
}
llSetStatus(STATUS_PHYSICS,TRUE);
}
if(llVecMag(mydir + tardir) <1)
{
//llOwnerSay("waypoint behind us");
direction= -1;
}
else
{
direction = 1;
}
if(test.z>0)
{
angular.z +=PI*(llFabs(test.z));
if (angular.z >PI/4)
{
angular.z=PI/4;
}
linear.y =planardist/4;
if(linear.y > 5)
{
linear.y=5;
}
}
if(test.z<0)
{
angular.z -=PI*(llFabs(test.z));
if(angular.z < -PI/4)
{
angular.z = -PI/4;
}
linear.y = -planardist/4;
if(linear.y < -5)
{
linear.y = -5;
}
}
if(tardir.z>0)
{
linear.z = 25*tardir.z;
}
if(tardir.z<0)
{
linear.z = 25*tardir.z;
}
if(planardist >20)
{
linear.x =20*direction;
}
if (planardist < 20)
{
linear.x =planardist/4*direction;
}
//llOwnerSay((string)linear);
if(dist <1)
{
float time=llGetTime();
if(time >= 4)
{
llResetTime();
if(target==<42.0,34.0,378.0>)
{
llWhisper(0,"waypoint1 reached");
target=<42.0,34.0,400>;
state dumping;
}
else if(target==<42.0,34.0,400>)
{
llWhisper(0,"waypoint2 reached");
target=<43,180,400>;
//llSetStatus(STATUS_ROTATE_Z,TRUE);
}
else if(target==<43,180,400>)
{
llWhisper(0,"waypoint3 reached");
target=<43,180,355>;
//llSetStatus(STATUS_ROTATE_Z,FALSE);
}
else if(target==<43,180,355>)
{
llWhisper(0,"waypoint4 reached");
target=<43,180,420>;
llSetStatus(STATUS_ROTATE_Z|STATUS_PHYSICS,FALSE);
llSleep(15);
llSetStatus(STATUS_ROTATE_Z|STATUS_PHYSICS,TRUE);
}
else if(target==<43,180,420>)
{
llWhisper(0,"waypoint5 reached");
target=<208,134,233>;
//llSetStatus(STATUS_ROTATE_Z,TRUE);
}
else if(target==<208,134,233>)
{
llWhisper(0,"waypoint6 reached");
llSleep(10);
target=<208,134,400>;
}
else if(target==<208,134,400>)
{
llWhisper(0,"waypoint7 reached");
target=<42.0,34.0,378>;
}
}
}
vector vert=target-mypos;
//llSay(0,(string)tardir.z);
//llOwnerSay((string)angular);
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, linear);
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular);
llSetText("planar distance: " + (string)planardist + "\n vertical distance: " + (string)vert.z + "\n linear motor: " +(string)linear + "\n angular motor: " +(string)angular + "\n Enegry: " + (string)llGetEnergy(),<1,1,1>,1);
if(linear.z > 50)
{
linear=<linear.x,linear.y,50>;
}
if(linear.z < -50)
{
linear=<linear.x,linear.y,-50>;
}
if(linear.x >40)
{
linear=<40,linear.y,linear.z>;
}
if (linear.x < -40)
{
linear=<-40,linear.y,linear.z>;
}
//llOwnerSay((string)linear);
}
}
state dumping
{
state_entry()
{
llSetStatus(STATUS_PHYSICS,FALSE);
llSleep(.2);
vector myrot=llRot2Euler(llGetRot());
llSetRot(llEuler2Rot(<0,0,myrot.z>));
llSetStatus(STATUS_PHYSICS,TRUE);
llSetStatus(STATUS_ROTATE_Y,FALSE);
llSetStatus(STATUS_ROTATE_Z,TRUE);
llSetBuoyancy(1.0);
llSetVehicleType(VEHICLE_TYPE_AIRPLANE);
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <55.0, 55.0, 500.0>);
llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 600.0);
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0.0, 0.0, 0.0>);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 100.0);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, .1);
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, <PI, PI, PI/25>);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, .5);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, .5);
llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 310.0) ;
llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 370.0);
llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, .10);
llSetVehicleFloatParam(VEHICLE_BUOYANCY, 1.5);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.0);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.0);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 0.0);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.0);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 10.0);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.25);
llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 1.0);
llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 0.5) ;
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.50);
llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, <0.0, 0.0, 0.0, 1.0>);
llRemoveVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP
| VEHICLE_FLAG_HOVER_WATER_ONLY
| VEHICLE_FLAG_HOVER_TERRAIN_ONLY
| VEHICLE_FLAG_LIMIT_MOTOR_UP
|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT ) ;
llRotTarget(<-0.00000, -0.00000, 0.70711, 0.70711>,0.1);
}
not_at_rot_target()
{
vector angular;
vector mydir=llRot2Fwd(llGetRot());
rotation test=llRotBetween(mydir,<0,1,0>);
if(test.z>0)
{
angular.z +=PI*(llFabs(test.z));
if (angular.z >PI/8)
{
angular.z=PI/8;
}
}
if(test.z<0)
{
angular.z -=PI*(llFabs(test.z));
if(angular.z < -PI/8)
{
angular.z = -PI/8;
}
}
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular);
}
at_rot_target(integer num, rotation target, rotation myrot)
{
llSetStatus(STATUS_PHYSICS,FALSE);
llWhisper(0,"dumping waste");
llMessageLinked(LINK_SET,0,"dumping",NULL_KEY);
llSleep(5);
llSay(0,"dump finished");
llSetStatus(STATUS_PHYSICS,TRUE);
state default;
}
}
I thought it might have something to do with having a low energy level, but it doesn't dip below normal operating levels (.0008 to .0001)