Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Sitting location in Boat

a lost user
Join date: ?
Posts: ?
09-08-2005 17:58
Making a Boat. When I use this script..I'm everywhere but on the seat. Can someone please tell me where in this script..are the numbers for the location of where yur av sits. Also..is there a command..that yu can use to get the location? I have tried adjusting..the
Height offset of seat..and Viewing position..with no luck. Thanks so much for any input.

// Fixit Galatea generic boat script
// This script uses the basic direction keys for boat operation and requires
// the final prim to be oriented at rotation <0, 0, 0>. The handling

// Version of this script
float version = 0.82;

//****************************************************************************
//****************************************************************************
//****************************************************************************
//* The following items can be edited in this script. See the comment for each
//* item to see how it work when it is changed.
//****************************************************************************

//* When the forward key is pressed and the mouse button is pressed at the
//* same time, this speed is used. This number should be between 0.0 and 30.0,
//* with higher numbers giving faster performance.
float fastspeed = 25.0;

//* When the forward key is pressed and the mouse button is NOT pressed, this
//* speed is used. This number should be between 0.0 and whatever the
//* fastspeed value was set at, with higher numbers giving faster performance.
float slowspeed = 15.0;

//* This is the reverse speed. It shouldn't be too fast, but can be between
//* 0.0 and 30.0.
float backspeed = 10.0;

//* This is the vehicle 'hover' height, or how far it sits out of the water.
//* Adjust this as necessary for your boat.
float floatheight = 4.20;

//* If the boat is to ramp up speed slowly, set the following value to '1'.
//* Otherwise, the board will instantly reach full speed when the forward
//* key is pressed.
integer fastforward = 0; // NOT IMPLEMENTED YET

//* Turning speed, a small turning speed is best
float turnspeed = 1.5;

//* If the boat 'angles' into turns, set the following value to '1'.
//* Otherwise, the boat will do flat turns.
integer angledturn = 1; // NOT IMPLEMENTED YET

//* Height offset of seat
vector seatheight = <-1.25, -0.55, 0.35>;

//* Viewing position
vector viewpos = <-8, 0, 5.5>;

//****************************************************************************
//****************************************************************************
//****************************************************************************

// Initialize the vehicle as a boat
vehicle_init()
{
llSetVehicleType(VEHICLE_TYPE_BOAT);

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

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

// linear motor wins after about five seconds, decays after about a minute
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0>;);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 0.1);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.05);

// agular motor wins after four seconds, decays in same amount of time
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, <0, 0, 0>;);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.1);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.2);

// hover
llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, floatheight);
llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, 0.2);
llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 0.4);
llSetVehicleFloatParam(VEHICLE_BUOYANCY, 1.0);

// Slight linear deflection with timescale of 1 seconds
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.1);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 1);

// Slight angular deflection
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.1);
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 6);

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

// weak negative damped banking
llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 1.0);
llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 1.0);
llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.1);

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

// remove these flags
llRemoveVehicleFlags(VEHICLE_FLAG_HOVER_TERRAIN_ONLY
| VEHICLE_FLAG_LIMIT_ROLL_ONLY
| VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT);
// set these flags
llSetVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP
| VEHICLE_FLAG_HOVER_WATER_ONLY
| VEHICLE_FLAG_HOVER_UP_ONLY
| VEHICLE_FLAG_LIMIT_MOTOR_UP);
}

// Setup everything
all_setup()
{
// Display version number
// llWhisper(0, "Motor Yacht script " + (string) version);
llSetStatus(STATUS_PHYSICS, FALSE);

// Set sit direction (forward) and sight location slightly up and behind
llSitTarget(seatheight, llEuler2Rot(<0, 0, 0>;));
llSetCameraAtOffset(<6, 0, 6>;);
llSetCameraEyeOffset(viewpos);
llSetSitText("Ride!";);

// Initialize vehicle states
vehicle_init();

// Set up listener callback function
llListen(0, "", llGetOwner(), "";);
}

// State (default) event handlers
default
{
state_entry()
{
all_setup();
}

on_rez(integer start_param)
{
llSetStatus(STATUS_PHYSICS, FALSE);
}

run_time_permissions(integer permissions)
{
// Get user permissions
if ((permissions & PERMISSION_TAKE_CONTROLS) ==
PERMISSION_TAKE_CONTROLS)
{
llTakeControls(CONTROL_ML_LBUTTON | CONTROL_FWD |
CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT |
CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT, TRUE, FALSE);
}
}

changed(integer change)
{
if (change & CHANGED_LINK)
{
key agent = llAvatarOnSitTarget();
if (agent)
{
if (agent != llGetOwner())
{
llSay(0, "This boat isn't yours, but you can buy a copy!";);
llUnSit(agent);
}
else
{
llRequestPermissions(agent, PERMISSION_TAKE_CONTROLS);
llSetStatus(STATUS_PHYSICS, TRUE);
}
}
else
{
llReleaseControls();
llSetStatus(STATUS_PHYSICS, FALSE);
}
}
}

control(key name, integer levels, integer edges)
{
float side = 0.0;
float forw = 0.0;
float move = 0.0;
float turn;

if (levels & CONTROL_ML_LBUTTON)
{
move = fastspeed;
turn = 1.5 * turnspeed;
// forw = 2 * PI / 3;
}
else if (levels & CONTROL_FWD)
{
move = slowspeed;
turn = 1.0 * turnspeed;
// forw = PI / 2;
}
else if (levels & CONTROL_BACK)
{
move = -backspeed;
// forw = -PI / 3;
// turn = -1.0 * turnspeed;
}

if (levels & (CONTROL_LEFT | CONTROL_ROT_LEFT))
{
if (move == fastspeed)
{
side = turnspeed;
// forw = PI;
}
else if (move != 0)
{
side = turnspeed;
// forw = PI / 3;
}
else
{
side = .67 * turnspeed;
// forw = PI / 4;
move = 0.1;
}
}
else if (levels & (CONTROL_RIGHT | CONTROL_ROT_RIGHT))
{
if (move == fastspeed)
{
side = -turnspeed;
// forw = PI;
}
else if (move != 0)
{
side = -turnspeed;
// forw = PI / 3;
}
else
{
side = -.67 * turnspeed;
// forw = PI / 4;
move = 0.1;
}
}

if (move == 0)
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0, 0, 0>;);
}
else
{
llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION,
<move, 0, 0>;);
llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION,
<-side / 5, 0, side>;);
}
}

listen(integer channel, string name, key id, string message)
{
list params = llParseString2List(message, [" "], [":"]);
string cmd = llList2String(params, 0);
integer enable = llList2Integer(params, 1);

// Commands
;
}

touch_start(integer total_number)
{
key id = llDetectedOwner(total_number - 1);
// llGiveInventory(id, "Info card";);
}
}
Jillian Callahan
Rotary-winged Neko Girl
Join date: 24 Jun 2004
Posts: 3,766
09-08-2005 18:02
CODE
 //* Height offset of seat
vector seatheight = <-1.25, -0.55, 0.35>;
This is the bit to change. the first number is position forward to back, the second left to right, and the third is height.
This is relative to the prim the script is in.
_____________________
a lost user
Join date: ?
Posts: ?
09-08-2005 18:06
Thank You so much..*S.
Egbert McLuhan
Registered User
Join date: 27 Aug 2005
Posts: 5
d
09-09-2005 06:51
i always put the script in the last part, a small cube that acts as a seat, then link the rest of the boat to the seat with script, adjust some values when needed. (like float height etc)
Corporal Candour
Registered User
Join date: 3 Sep 2005
Posts: 38
09-10-2005 07:46
If that doesnt work detach the base prim from the boat, add the script to it, move the prim around till you're sitting correctly on the seat, then attach it to the linked parts.
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
09-10-2005 09:19
Also, Angelina, that would have been much easier to read if you used the
CODE
 tags. They nicely format LSL...