Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Prim flips over 180 when riding my sled

StoneyNcrazy Diabolito
Registered User
Join date: 20 May 2009
Posts: 12
12-12-2009 17:52
Can someone please tell me why & what im doing wrong with code below? My hemisphere prim keeps flippin over 180 degrees when my avi sits on it to ride the saucer sled. I have tried changing the rotation values in the llSitTarget function, but it doesnt do any good. The code works fine as far as steering and moving goes, but my avi wont sit on the prim the way I want it too. Any help would be appreciated. Have a great weekend. Peace.

~StoneyNcrazy~

CODE


rotation rot;
key owner;

reset()
{
vector pos = llGetPos();
pos.z = pos.z + 2.0;
llMoveToTarget(pos, 0.3);
llRotLookAt(rot, 0.1, 1.0);
llSleep(1.0);
llStopLookAt();
llStopMoveToTarget();
}


default
{

state_entry()
{

llSetSoundQueueing(FALSE);
llPassCollisions(TRUE);

llSetSitText("Ride Sled");

llSitTarget(<0.4, 0.0, 0.25>, <0.00000, 0.08716, 0.00000, 0.99619>);
llSetCameraEyeOffset(<-4.0, 0.0, 3.00>);
llSetCameraAtOffset(<0.0, 0.0, 2.0>);

llSetVehicleType(VEHICLE_TYPE_CAR);
llRemoveVehicleFlags(-1);

llSetVehicleFlags(VEHICLE_FLAG_HOVER_WATER_ONLY | VEHICLE_FLAG_HOVER_UP_ONLY | VEHICLE_FLAG_NO_DEFLECTION_UP);

llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.2);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.15);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 1.0);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1000.0);

llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.1);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.1);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.1);

llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <10, 10, 10.0>);
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <10.0, 10.0, 10>);

llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.2);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 0.5);

llSetVehicleFloatParam(VEHICLE_BUOYANCY, 0);
llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0.01);
llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, 0.5);

llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 0.1);
llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 0.1);
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.01);
llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 1.0);

llCollisionSound("", 0.0);
}

changed(integer change)
{
if (change & CHANGED_LINK)
{
key agent = llAvatarOnSitTarget();

if (agent)
{
llSetStatus(STATUS_PHYSICS, TRUE);
llSetStatus(STATUS_PHANTOM, FALSE);
llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);
llMessageLinked(LINK_SET, 0, "on", "");
llSetTimerEvent(1.0);
//llTargetOmega(<0,0,0.2>,PI/4,1.0);
llSetText("",<1,0,0>,0);

}
else
{

llSetStatus(STATUS_PHYSICS, FALSE);
//llTargetOmega(<0,0,0>,PI/4,1.0);
llReleaseControls();
llMessageLinked(LINK_SET, 0, "off", "");
llSetTimerEvent(0.0);
llStopSound();

}
}

}

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;

if(level & CONTROL_FWD)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <16, 0, 0>);

}
if(level & CONTROL_BACK)
{

llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <-16,0,0>);

}

if(level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
{

angular_motor.z = -PI * 0.5;


}
if(level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
{

angular_motor.z = PI * 0.5;


}
if(level & (CONTROL_DOWN))
{
// llPlaySound("horn",1.0);
}
else if(level == FALSE)
{

}
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor);
}

timer()
{
vector pos = llGetPos();
if(( pos.z - llGround(ZERO_VECTOR) ) < 0.8)
{
rot = llGetRot();
}
}



}

Ron Khondji
Entirely unlike.
Join date: 6 Jan 2007
Posts: 224
12-13-2009 01:03
I think your hemisphere has a cut path of B = 0.0 and E = 0.5
Make them B = 0.5 and E = 0.0 and you're done.
Void Singer
Int vSelf = Sing(void);
Join date: 24 Sep 2005
Posts: 6,973
12-13-2009 04:37
you may want to look at the vertical attractor settings, higher efficiency and lower timescale IIRC
_____________________
|
| . "Cat-Like Typing Detected"
| . This post may contain errors in logic, spelling, and
| . grammar known to the SL populace to cause confusion
|
| - Please Use PHP tags when posting scripts/code, Thanks.
| - Can't See PHP or URL Tags Correctly? Check Out This Link...
| -
StoneyNcrazy Diabolito
Registered User
Join date: 20 May 2009
Posts: 12
12-13-2009 23:21
Thank you both Ron & Void for your help. Changing the Cut path to B = .5 to E = 1.0 did the trick. Have a great day/evening. Peace. ~StoneyNcrazy~