Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Vehicle Script - where do i go from here?

Cypher Ragu
[Mad Scientist]
Join date: 6 Jul 2008
Posts: 174
08-19-2008 23:09
Hi, I'm going to skip the introduction and get right to the point. I'm working on an RC Vehicle script, I'm about halfway through it and I'm stuck at the actual "vehicle" part...

I've taken certain bits and pieces from various open source scripts.

I have it working and getting perms correctly, I'm just unsure how to actually get it to move.

Here is the script:

__________________________

// RC helicopter

// Made by Cypher Ragu, parts of this script were taken from other open-source scripts

default
{


state_entry() {
llListen(1,"", NULL_KEY, "";);
llSetStatus(STATUS_PHYSICS, FALSE);
}

on_rez(integer start_param){
llRequestPermissions(llGetOwner(),PERMISSION_TAKE_CONTROLS);
}

listen(integer channel, string name, key id, string message) {
if (message == "remote";) {

llSetStatus(STATUS_PHYSICS, TRUE);

state remote; // switches the state

}

}

}
state remote
{

state_entry() {
llSay(0,"Remote control has been activated";);
llListen(1,"", NULL_KEY, "";);
llTakeControls(CONTROL_ML_LBUTTON | CONTROL_LBUTTON |CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT | CONTROL_UP | CONTROL_DOWN, TRUE, FALSE);

//now begins the vehicle parameters

llSetVehicleType(VEHICLE_TYPE_AIRPLANE);

llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.1);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 1.0);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 1);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, .2);

llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 0.5);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 30);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.5);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 3);

llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <1000,1000,1000>;);
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1000,1000,1000>;);

llSetVehicleFloatParam(VEHICLE_BUOYANCY, 0.5);

llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.1);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 3.0);

llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, .5);
llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 0.95);
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.1);


llSetCameraEyeOffset(<-15.0, 0.0, 3.0>;);
llSetSitText("Ride";);
llSetCameraAtOffset(<0, 0, 1>;);


}
listen(integer channel, string name, key id, string message) {
if (message == "noremote";) {

llSetStatus(STATUS_PHYSICS, FALSE);
llReleaseControls();

state default; // switches the state

}
}
}

____________________________________


All help is appreciated, thanks.
Dora Gustafson
Registered User
Join date: 13 Mar 2007
Posts: 779
08-20-2008 01:57
You don't have any control event handler in your script, that is where the linear and angular motors are controlled.
In the free boat script it looks like this:
CODE

control(key id, integer level, integer edge)
{
vector angular_motor;

if(level & CONTROL_FWD)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <15,0,0>);
}
if(level & CONTROL_BACK)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <-10,0,0>);
}
if(level & CONTROL_BACK & CONTROL_FWD)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0,0,0>);
}
if(level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
{
angular_motor.x += 1;
angular_motor.z -= 1;
}
if(level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
{
angular_motor.x -= 1;
angular_motor.z += 1;
}
if(level & (CONTROL_UP))
{
angular_motor.y -= 50;
}

llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor);
}
_____________________
From Studio Dora
Cypher Ragu
[Mad Scientist]
Join date: 6 Jul 2008
Posts: 174
08-20-2008 06:17
Thank you so much, that's just what I needed to know. Thank you for your help :)