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). //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."); } } }
|