Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

X-flight, Please read if you use or sell this script.

Jeska Linden
Administrator
Join date: 26 Jul 2004
Posts: 2,388
12-12-2005 14:42
Goodwill - the object in question has been removed from Help Island. I had gotten permission from the object creator for use on Help Island, in our freebie store (most of the objects were given to the Teen Grid for use in their freebie store), but I did not know that he/she did not have permission to use the script in question.
Goodwill Epoch
Admiral of Kazenojin
Join date: 20 May 2003
Posts: 121
12-12-2005 15:07
From: Jeska Linden
Goodwill - the object in question has been removed from Help Island. I had gotten permission from the object creator for use on Help Island, in our freebie store (most of the objects were given to the Teen Grid for use in their freebie store), but I did not know that he/she did not have permission to use the script in question.

Thank you very much, I do appreciate that.

It seems that there are a number of other similar, and more effective and less buggy scripts and items that may be able to replace it. I would suggest that someone with one of these offer it as a replacement (assuming you have the rights to it ;) )
_____________________
http://www.narfy.com
Siro Mfume
XD
Join date: 5 Aug 2004
Posts: 747
12-13-2005 03:08
From: Goodwill Epoch
Thank you very much, I do appreciate that.

It seems that there are a number of other similar, and more effective and less buggy scripts and items that may be able to replace it. I would suggest that someone with one of these offer it as a replacement (assuming you have the rights to it ;) )


Indeed, there are. Here's one, feel free to improve, distribute, rebrand, resell, whatever. Mind you, I've never seen the code for X-Flight and only ever briefly used one once. I distribute this in an attachment that is free to copy (when someone IM's me asking for one). There's a lot of stuff you can do with it (and I myself have done with it over time). It originally started out as an antigrief/locking script to help me while I was building and moved on from there to be a highly responsive movement script (as the only way to really not be pushed is to be sitting on a nonphysics object).

CODE
//Movement Script, inspired by many scripts, but written largely by Siro Mfume
//Should be portable to small vehicles too if you want.
float speed;
key owner;
integer handle;
default
{
state_entry()
{
llListenRemove(handle);
owner=llGetOwner();
handle = llListen(5,"",owner,"");
}

attach(key id){
llResetScript(); //reset script on attaching
}
on_rez(integer start_param)
{
llResetScript(); //and rezing
}
run_time_permissions(integer perm)
{
if(perm & (PERMISSION_TAKE_CONTROLS))
{
llTakeControls(CONTROL_FWD|
CONTROL_BACK|
CONTROL_RIGHT|
CONTROL_LEFT|
CONTROL_ROT_RIGHT|
CONTROL_ROT_LEFT|
CONTROL_UP|
CONTROL_DOWN,
TRUE, TRUE);
}
}


control(key id, integer level, integer edge)
{//get input on all possible movements
//now using apply impulse instead of setforce, although both could be used.
//fwd keypress
if(level & CONTROL_FWD)
{
//fwd+rotate right keypress handling
if(level & CONTROL_ROT_RIGHT){
//when rotating use rotational impulses to turn the avatar at higher speeds.
//fwd+rotate right+up
if(level & CONTROL_UP){
//allow avatar movement
llStopMoveToTarget();
llApplyImpulse(<speed,0,speed>, TRUE);
//upper cap on rotation
if(speed>20){
llApplyRotationalImpulse(<0,0,-(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,-(speed*.001)>, TRUE);
}
}
//fwd+rotate right+down
else if(level & CONTROL_DOWN){
llStopMoveToTarget();
llApplyImpulse(<speed,0,-speed>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,-(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,-(speed*.001)>, TRUE);
}
}
//just fwd+rotate right
else{
llStopMoveToTarget();
llApplyImpulse(<speed,0,0>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,-(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,-(speed*.001)>, TRUE);
}
}
}
//fwd+rotate left handling
else if(level & CONTROL_ROT_LEFT){
//fwd+rotate left+up
if(level & CONTROL_UP){
llStopMoveToTarget();
llApplyImpulse(<speed,0,speed>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,(speed*.001)>, TRUE);
}
}
//fwd+rotate left+down
else if(level & CONTROL_DOWN){
llStopMoveToTarget();
llApplyImpulse(<speed,0,-speed>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,(speed*.001)>, TRUE);
}
}
//just fwd+rotate left
else{
llStopMoveToTarget();
llApplyImpulse(<speed,0,0>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,(speed*.001)>, TRUE);
}
}
}
//fwd+up
//since we already handled the other cases we don't need to repeat
else if(level & CONTROL_UP){
llStopMoveToTarget();
llApplyImpulse(<speed, 0,speed>, TRUE);
}
//fwd+down
else if(level & CONTROL_DOWN){
llStopMoveToTarget();
llApplyImpulse(<speed, 0,-speed>, TRUE);
}
//just fwd
else{
llStopMoveToTarget();
llApplyImpulse(<speed, 0,0>, TRUE);
}
}
//backward keypress handling
else if(level & CONTROL_BACK)
{
//backward+down handling
if(level & CONTROL_DOWN){
//backward+down+rotate left
if(level & CONTROL_ROT_LEFT){
llStopMoveToTarget();
llApplyImpulse(<-speed,0,-speed>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,(speed*.001)>, TRUE);
}
}
//backward+down+rotate right
else if (level & CONTROL_ROT_RIGHT){
llStopMoveToTarget();
llApplyImpulse(<-speed,0,-speed>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,-(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,-(speed*.001)>, TRUE);
}
}
//backward+down
else{
llStopMoveToTarget();
llApplyImpulse(<-speed, 0,-speed>, TRUE);
}
}
//backward+up handling
else if(level & CONTROL_UP){
//backward+up+rotate left
if(level & CONTROL_ROT_LEFT){
llStopMoveToTarget();
llApplyImpulse(<-speed,0,speed>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,(speed*.001)>, TRUE);
}
}
//backward+up+rotate right
else if(level & CONTROL_ROT_RIGHT){
llStopMoveToTarget();
llApplyImpulse(<-speed,0,speed>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,-(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,-(speed*.001)>, TRUE);
}
}
//backward+up
else{
llStopMoveToTarget();
llApplyImpulse(<-speed, 0,speed>, TRUE);
}
}
//back+rotate left
else if(level & CONTROL_ROT_LEFT){
llStopMoveToTarget();
llApplyImpulse(<-speed,0,0>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,(speed*.001)>, TRUE);
}
}
//back+rotate right
else if(level & CONTROL_ROT_RIGHT){
llStopMoveToTarget();
llApplyImpulse(<-speed,0,0>, TRUE);
if(speed>20){
llApplyRotationalImpulse(<0,0,-(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,-(speed*.001)>, TRUE);
}
}
//back
else{
llStopMoveToTarget();
llApplyImpulse(<-speed, 0,0>, TRUE);
}
}
//just up
else if(level & CONTROL_UP)
{
llStopMoveToTarget();
llApplyImpulse(<0,0,speed>, TRUE);
}
//just down
else if(level & CONTROL_DOWN){
llStopMoveToTarget();
llApplyImpulse(<0,0,-speed>, TRUE);
}
//strafe left, yes I know I didn't handle a lot of strafing
else if(level & CONTROL_LEFT)
{
llStopMoveToTarget();
llApplyImpulse(<0,speed,0>, TRUE);
}
//strafe right
else if(level & CONTROL_RIGHT){
llStopMoveToTarget();
llApplyImpulse(<0,-speed,0>, TRUE);
}
//rotate right
else if(level & CONTROL_ROT_RIGHT)
{
llStopMoveToTarget();
if(speed>20){
llApplyRotationalImpulse(<0,0,-(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,-(speed*.001)>, TRUE);
}
}
//rotate left
else if(level & CONTROL_ROT_LEFT)
{
llStopMoveToTarget();
if(speed>20){
llApplyRotationalImpulse(<0,0,(.1)>, TRUE);
}
else{
llApplyRotationalImpulse(<0,0,(speed*.001)>, TRUE);
}
}
else{
//autolocks the avatar all the time if they are not moving.
llMoveToTarget(llGetPos(), 0.1);
}
}
listen(integer channel, string name, key id, string message)
{
if(message=="stop")
{
llSetTimerEvent(0.0);
llReleaseControls();
llStopMoveToTarget();
llOwnerSay("deactivated");
}
if(message=="start")
{
llOwnerSay("activated");
speed=2;
if(owner)
{
llRequestPermissions(owner, PERMISSION_TAKE_CONTROLS);
}
}
if (message=="walk")
{
speed=2;
llOwnerSay("walking speed");
}
if (message=="trot")
{
speed=10;
llOwnerSay("jogging speed");
}
if (message=="sprint")
{
speed=20;
llOwnerSay("flat out run");
}
if (message=="plaid")
{
speed=10000;
llOwnerSay("Ludicris Speed.");
}
}
}
1 2 3