OpenSim support for vehicles using LSL is in its very early stages, and has not yet been completely implemented.<br><br>For information on bleeding edge work with LSL vehicles on OpenSim, see <a href="http://osgrid.org/forums/viewtopic.php?f=19&t=1747&sid=d1081fc8fdba4dae622abb8783a97d02">http://osgrid.org/forums/viewtopic.php?f=19&t=1747&sid=d1081fc8fdba4dae622abb8783a97d02</a><br>
<br>Cheers<br>James/Hiro<br><br><br><div class="gmail_quote">On Mon, Sep 21, 2009 at 5:31 PM, Thomas Seuring <span dir="ltr"><<a href="mailto:Thomas@seuring.com">Thomas@seuring.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<div>
<font size="2"><font face="Verdana, Helvetica, Arial"><span style="font-size: 10pt;">I've wrote a small, very easy Script to drive a Vehicle. But everytime I get and like to drive, OpenSim crashes.<br>
<br>
Any ideas?<br>
<br>
Thanks<br>
<br>
Tom<br>
<br>
BELOW: Crash and Code:<br>
<br>
<br>
The crash is:<br>
<br>
Region (root) # Stacktrace:<br>
<br>
  at (wrapper managed-to-native) Ode.NET.d.JointSetLMotorAxis (intptr,int,int,single,single,single) <0x00004><br>
  at (wrapper managed-to-native) Ode.NET.d.JointSetLMotorAxis (intptr,int,int,single,single,single) <0xffffffff><br>
  at OpenSim.Region.Physics.OdePlugin.ODEVehicleSettings.SetLinearMotorProperties () <0x001e6><br>
  at OpenSim.Region.Physics.OdePlugin.ODEVehicleSettings.LinearMotor (single) <0x004aa><br>
  at OpenSim.Region.Physics.OdePlugin.ODEVehicleSettings.Step (single) <0x0009b><br>
  at OpenSim.Region.Physics.OdePlugin.OdePrim.Move (single) <0x00b20><br>
  at OpenSim.Region.Physics.OdePlugin.OdeScene.Simulate (single) <0x0155f><br>
  at OpenSim.Region.Framework.Scenes.SceneGraph.UpdatePhysics (double) <0x0003c><br>
  at OpenSim.Region.Framework.Scenes.Scene.Update () <0x004d5><br>
  at OpenSim.Region.Framework.Scenes.Scene.Heartbeat (object) <0x00018><br>
  at (wrapper runtime-invoke) object.runtime_invoke_void__this___object (object,intptr,intptr,intptr) <0xffffffff><br>
Abort trap<br>
<br>
<br>
The Script is:<br>
// set the vehicle parameters<br>
setupVehicle()<br>
{<br>
    llSetStatus(STATUS_PHYSICS, TRUE);<br>
    llSetVehicleType(VEHICLE_TYPE_CAR);<br>
    <br>
    // The vehicle will get up to full speed in 1 second<br>
    llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0);<br>
    <br>
    // The motor will become ineffective after 3 seconds.<br>
    llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 3.0);<br>
    <br>
    // Turn off angular and linear deflection <br>
    llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.0);<br>
    llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.0);<br>
<br>
    // Set low linear friction, equal in all directions<br>
    llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 5000.0);<br>
    <br>
    // Set very high angular friction, this vehicle does not <br>
    // like to turn<br>
    llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 0.1); <br>
}<br>
<br>
// stop this object from being a vehicle<br>
noVehicle()<br>
{<br>
    // Turn off physics and vehicle params<br>
    llSetVehicleType(VEHICLE_TYPE_NONE);<br>
    llSetStatus(STATUS_PHYSICS, FALSE);<br>
}<br>
<br>
// give this prim a wedge shape and set it to about avatar size<br>
setupObject()<br>
{<br>
    llSetPrimitiveParams([<br>
    PRIM_TYPE, <br>
        PRIM_TYPE_BOX,<br>
        PRIM_HOLE_DEFAULT,<br>
        <0.75, 1.0, 0.0>,<br>
        0.0,<br>
        <0.0, 0.0, 0.0>,<br>
        <1.0, 1.0, 0.0>,<br>
        <0.0, 0.0, 0.0>,<br>
    PRIM_SIZE,<br>
        <4.0, 1.5, 0.5><br>
        ]);<br>
}<br>
<br>
// default state, not a vehicle<br>
default<br>
{<br>
    state_entry()<br>
    {<br>
        noVehicle();<br>
        setupObject();<br>
                <br>
        // Set the location avatars will sit<br>
        llSitTarget(<-1.0, 0.0, 0.5>, ZERO_ROTATION);<br>
    }<br>
    <br>
    changed(integer change)<br>
    {<br>
        if (change & CHANGED_LINK)<br>
        {<br>
            if (llAvatarOnSitTarget() != NULL_KEY)<br>
            {<br>
                // someone is sitting on the object; request permission<br>
                // to take controls<br>
                llRequestPermissions(<br>
                    llAvatarOnSitTarget(),<br>
                    PERMISSION_TAKE_CONTROLS); <br>
            }<br>
        }<br>
    }<br>
    <br>
    run_time_permissions(integer perm)<br>
    {<br>
        // the run time permissions have changed; if script can <br>
        // take controls, do that and go to the vehicle state<br>
        if (perm & PERMISSION_TAKE_CONTROLS)<br>
        {<br>
            llTakeControls(<br>
                CONTROL_FWD | CONTROL_BACK | <br>
                CONTROL_LEFT | CONTROL_RIGHT | <br>
                CONTROL_ROT_LEFT |CONTROL_ROT_RIGHT,<br>
                TRUE, FALSE);<br>
            state vehicle;<br>
        }<br>
    }<br>
}<br>
<br>
state vehicle<br>
{<br>
    state_entry()<br>
    {<br>
        setupVehicle();<br>
    }<br>
        <br>
    changed(integer change)<br>
    {<br>
        // If the avatar sitting on this object gets up, stop <br>
        // being a vehicle<br>
        if (change & CHANGED_LINK)<br>
        {<br>
            if (llAvatarOnSitTarget() == NULL_KEY)<br>
            {<br>
                // no one is sitting on the object; stop <br>
                // being a vehicle<br>
                llReleaseControls();<br>
                state default;<br>
            }<br>
        }<br>
    }<br>
    <br>
    control(key from, integer level, integer edge)<br>
    {<br>
        integer pressed = (level & edge);<br>
        vector velocity = ZERO_VECTOR;<br>
        float speed = 15.0;<br>
        <br>
        if (pressed & CONTROL_FWD)<br>
        {<br>
            velocity = <1.0, 0.0, 0.0>;<br>
        }<br>
        else if (pressed & CONTROL_BACK)<br>
        {<br>
            velocity = <-1.0, 0.0, 0.0>;<br>
        } <br>
        else if (pressed & CONTROL_LEFT || <br>
                 pressed & CONTROL_ROT_LEFT)<br>
        {<br>
            velocity = <0.0, 1.0, 0.0>;<br>
        }<br>
        else if (pressed & CONTROL_RIGHT || <br>
                 pressed & CONTROL_ROT_RIGHT)<br>
        {<br>
            velocity = <0.0, -1.0, 0.0>;<br>
        }<br>
        if (velocity != ZERO_VECTOR)<br>
        {<br>
            velocity = velocity * speed;<br>
            llSetVehicleVectorParam(<br>
                VEHICLE_LINEAR_MOTOR_DIRECTION, <br>
                velocity);<br>
        } <br>
    }<br>
}</span></font></font>
</div>


<br>_______________________________________________<br>
Opensim-users mailing list<br>
<a href="mailto:Opensim-users@lists.berlios.de">Opensim-users@lists.berlios.de</a><br>
<a href="https://lists.berlios.de/mailman/listinfo/opensim-users" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>===================================<br><a href="http://osgrid.org">http://osgrid.org</a><br><a href="http://del.icio.us/SPQR">http://del.icio.us/SPQR</a><br><a href="http://twitter.com/jstallings2">http://twitter.com/jstallings2</a><br>
<a href="http://www.linkedin.com/pub/5/770/a49">http://www.linkedin.com/pub/5/770/a49</a><br>