Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Vehicle script, quit working?

ArchTx Edo
Mystic/Artist/Architect
Join date: 13 Feb 2005
Posts: 1,993
07-03-2006 12:21
Has something changed in the last few upgrades? A pickup truck that I made has unexpectedly quit working. A friend who has a copy of the truck says hers stopped working to. Here is the script.

CODE

//Simple Car Script V1.0
float speed;
vector angular_motor;

default
{
state_entry()
{
llMessageLinked(LINK_ALL_CHILDREN, 0, "stop", NULL_KEY);
llCollisionSound("", 0.0);
llSetSitText("Get in");
llStopSound();
llSetTimerEvent(0.0);
speed=0;
llSitTarget(<0.1, 0.35, 0.6>, <0,-0.2,0,1>);
llSetCameraEyeOffset(<-5.0, 0.0, 2.5>);
llSetCameraAtOffset(<0.0, 0.0, 1.0>);
// remove all flags
llSetVehicleFlags(-1);
llSetVehicleType(VEHICLE_TYPE_CAR);
llSetVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY);

// least for forward-back, most friction for up-down
llSetVehicleVectorParam( VEHICLE_LINEAR_FRICTION_TIMESCALE, <100,3,10> );

// uniform angular friction (setting it as a scalar rather than a vector)
llSetVehicleFloatParam( VEHICLE_ANGULAR_FRICTION_TIMESCALE, 2 );

// linear motor wins after about 1 second, decays after about a minute
llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_TIMESCALE, 1 );
llSetVehicleFloatParam( VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 60 );

// agular motor wins after 0.75 seconds, decays in 5 secs
llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.75 );
llSetVehicleFloatParam( VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 5 );

// halfway linear deflection with timescale of 0.1 seconds
llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.8 );
llSetVehicleFloatParam( VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.1 );

// angular deflection
llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.2 );
llSetVehicleFloatParam( VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 0.1 );

// somewhat bounscy vertical attractor
llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.6 );
llSetVehicleFloatParam( VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 0.5 );

// weak negative damped banking
llSetVehicleFloatParam( VEHICLE_BANKING_EFFICIENCY, -0.01 );
llSetVehicleFloatParam( VEHICLE_BANKING_TIMESCALE, 0.01 );

// default rotation of local frame
llSetVehicleRotationParam( VEHICLE_REFERENCE_FRAME, <0, 0, 0, 1> );
}

changed(integer change)
{
if (change & CHANGED_LINK)
{
key agent = llAvatarOnSitTarget();
if (agent)
{
if (agent != llGetOwner())
{
llSay(0, "You aren't the owner");
llUnSit(agent);
llPushObject(agent, <0,0,100>, ZERO_VECTOR, FALSE);
}
else
{
// You sit and are owner so get controls
llSetStatus(STATUS_PHYSICS, TRUE);
llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, TRUE);
llRequestPermissions(agent,PERMISSION_TAKE_CONTROLS);
}
}
else
{
// You stand so car stops
llMessageLinked(LINK_ALL_CHILDREN, 0, "stop", NULL_KEY);
llSetStatus(STATUS_PHYSICS, FALSE);
llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, FALSE);
llReleaseControls();
llStopSound();
llSetTimerEvent(0.0);
}
}

}

run_time_permissions(integer perm)
{
if (perm)
{
// Take these controls and lets go
llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT | CONTROL_UP | CONTROL_DOWN, TRUE, FALSE);
llMessageLinked(LINK_ALL_CHILDREN, 0, "start", NULL_KEY);
llLoopSound("car idle",0.3);
llSetTimerEvent(0.3);
}
}
control(key id, integer level, integer edge)
{

if(level & CONTROL_FWD)
{
// Set cruising speed faster
if(speed < 20)
{
speed +=1;
}
}
if(level & CONTROL_BACK)
{
// Set cruising speed slower
if(speed > -8)
{
speed -=1;
}
}
if((level & CONTROL_FWD) && (level & CONTROL_BACK))
{
// Forwards and Backwards <-- Brakes or stops
llMessageLinked(LINK_ALL_CHILDREN, 0, "brake", NULL_KEY);
speed=0;
}
if(level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
{
// Turn right
angular_motor.x += 5;
angular_motor.z -= 5;
}
if(level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
{
// Turn left
angular_motor.x -= 5;
angular_motor.z += 5;
}
if(level & CONTROL_UP)
{
// add features for when you press up
}
if(level & CONTROL_DOWN)
{
// Added feature for when you press down
}

}

timer()
{
// the timer actually moves vehicle
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <speed,0,0>);
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor);
// reset turning angle or you would go around in circles
angular_motor=<0,0,0>;
}
}


_____________________

VRchitecture Model Homes at http://slurl.com/secondlife/Shona/60/220/30
http://www.slexchange.com/modules.php?name=Marketplace&MerchantID=2240
http://shop.onrez.com/Archtx_Edo
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
07-04-2006 12:22
Use the
CODE
 tags to format the script, and I'll have a look.