Could someone please test out this script for me I could be wrong I never really scripted in blockland before but this is worth a shot let me know if anything is wrong.
float forward_power = 15; //Power used to go forward (1 to 30)
float reverse_power = -15; //Power ued to go reverse (-1 to -30)
float turning_ratio = 2.0; //How sharply the vehicle turns. Less is more sharply. (.1 to 10)
string sit_message = "Ride"; //Sit message
string not_owner_message = "You are not the owner of this vehicle ..."; //Not owner message
float VERTICAL_THRUST = 7;
float ROTATION_RATE = 2.0; // Rate of turning
resetY()
{
rotation rot = llGetRot();
llSetRot(rot);
}
default
{
state_entry()
{
llSetSitText(sit_message);
// forward-back,left-right,updown
llSitTarget(<0.2,0,0.45>, ZERO_ROTATION );
llSetCameraEyeOffset(<-8, 0.0, 5.0>);
llSetCameraAtOffset(<1.0, 0.0, 2.0>);
llPreloadSound("helicopter_run");
//car
llSetVehicleType(VEHICLE_TYPE_AIRPLANE);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EF FICIENCY, 0.1);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFF ICIENCY, 0.1);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TI MESCALE, 10);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIM ESCALE, 10);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCAL E, 0.2);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TI MESCALE, 10);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCA LE, 0.2);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_T IMESCALE, 0.1);
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMES CALE, <1,1,1>);
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIME SCALE, <1,1000,1000>);
llSetVehicleFloatParam(VEHICLE_BUOYANCY, 0.9);
llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_E FFICIENCY, 1 );
llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_T IMESCALE, 2 );
llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, 1 );
llSetVehicleFloatParam( VEHICLE_BANKING_MIX, 0.5 );
llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, .5 );
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
key agent = llAvatarOnSitTarget();
if (agent)
{
if (agent != llGetOwner())
{
llSay(0, not_owner_message);
llUnSit(agent);
llPushObject(agent, <0,0,50>, ZERO_VECTOR, FALSE);
}
else
{
llMessageLinked(LINK_ALL_CHILDREN , 0, "start", NULL_KEY);
llSleep(.4);
llSetStatus(STATUS_PHYSICS, TRUE);
llSetStatus(STATUS_ROTATE_Y,TRUE);
llSleep(.1);
llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);
llLoopSound("helicopter_run",1);
}
}
else
{
llStopSound();
llMessageLinked(LINK_ALL_CHILDREN , 0, "stop", NULL_KEY);
llSetStatus(STATUS_PHYSICS, FALSE);
llSleep(.4);
llReleaseControls();
llTargetOmega(<0,0,0>,PI,0);
llResetScript();
}
}
}
run_time_permissions(integer perm)
{
if (perm) {
llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT | CONTROL_UP | CONTROL_DOWN, TRUE, FALSE);
}
}
control(key id, integer level, integer edge)
{
vector angular_motor;
// going forward, or stop going forward
if(level & CONTROL_FWD)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIO N, <forward_power,0,0>);
} else if(edge & CONTROL_FWD)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIO N, <0,0,0>);
}
// going back, or stop going back
if(level & CONTROL_BACK)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIO N, <reverse_power,0,0>);
}
else if(edge & CONTROL_BACK)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIO N, <0,0,0>);
}
// turning
if(level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
{
angular_motor.x += 25;
}
if(level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
{
angular_motor.x -= 25;
}
// going up or stop going up
if(level & CONTROL_UP) {
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIO N, <0,0,VERTICAL_THRUST>);
} else if (edge & CONTROL_UP) {
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIO N, <0,0,0>);
}
// going down or stop going down
if(level & CONTROL_DOWN) {
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIO N, <0,0,-VERTICAL_THRUST>);
} else if (edge & CONTROL_DOWN) {
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTIO N, <0,0,0>);
}
angular_motor.y = 0;
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTI ON, angular_motor);
} //end control
} //end default