Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float Buoyancy=0;
- vector v;
- default
- {
- state_entry()
- {
- llSay(0,"Ready");
- llSetStatus(STATUS_PHYSICS, FALSE);
- llSetSitText("Commands");
- llCollisionSound("",0.0);
- llSitTarget(<-0.3, 0.0, 0.8>, ZERO_ROTATION);
- vector pos=llGetPos(); //position to initialize global hover height
- //gHeight=pos.z;
- llSetRot(ZERO_ROTATION);
- llSetBuoyancy(0.99);
- llSetStatus(STATUS_PHYSICS, FALSE);
- }
- on_rez(integer pram)
- {
- llSetPos(llGetPos()+<0,0,1.5>); //jump up to clear the ground a little bit
- llResetScript();
- }
- changed(integer change)
- {
- if (change & CHANGED_LINK)
- {
- if (llAvatarOnSitTarget()!=NULL_KEY)
- {
- llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);
- }
- else
- {
- llSay(0,"fix it");
- llSetStatus(STATUS_PHYSICS, FALSE);
- llSetRot(ZERO_ROTATION);
- vector angles=llRot2Euler(llGetRot());
- llSetRot(llEuler2Rot(<0,0,angles.z>));
- llReleaseControls();
- // llStopAnimation(sitanim);
- }
- }
- }
- run_time_permissions(integer perm)
- {
- if (perm)
- {
- if (perm & PERMISSION_TRIGGER_ANIMATION)
- {
- llStopAnimation("sit");
- // llStartAnimation(sitanim);
- llSetStatus(STATUS_PHYSICS, TRUE);
- //gHeight+=2.0; //bounce up a bit to get away from obstacles
- }
- if (perm & PERMISSION_TAKE_CONTROLS)
- llTakeControls(
- CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT |
- CONTROL_BACK | CONTROL_FWD | CONTROL_UP | CONTROL_DOWN,
- TRUE, FALSE);
- }
- }
- control(key id, integer level, integer edge)
- {
- vector angmotor=<0,0,0>;
- integer angflag=0;
- if (level & edge & CONTROL_UP) //page up pressed
- {
- //gHeight += 1.0;
- Buoyancy+=0.2;
- // llSetVehicleFloatParam(VEHICLE_BUOYANCY, Buoyancy);
- // llSetBuoyancy(Buoyancy);
- llSetPos(llGetPos()+<0,0,1>);
- // llSay(0,"UP "+(string)llGetPos());
- }
- if ( level & edge & CONTROL_DOWN) //page down pressed
- {
- //gHeight -= 1.0;
- // if (gHeight<llGround(ZERO_VECTOR)+2.0) gHeight=llGround(ZERO_VECTOR)+2.0;
- llSetPos(llGetPos()-<0,0,1>);
- // llSay(0,"DOWN "+(string)llGetPos());
- Buoyancy-=0.2;
- // llSetBuoyancy(Buoyancy);
- // llSetVehicleFloatParam(VEHICLE_BUOYANCY, Buoyancy);
- }
- if ( level & edge & CONTROL_FWD) //foreward button pressed
- {
- angmotor.y = 2;
- angflag = 1;
- v=llRot2Fwd(llGetRot());
- // llPushObject(llGetKey(),v,ZERO_VECTOR,1);
- llSetPos(llGetPos()+5*v);
- // llSay(0,"FWD PRESSED");
- llSetTimerEvent(0.5);
- }
- if (~level & edge & CONTROL_FWD){ //foreward button released
- angflag = 1;
- // llSay(0,"FWD RELEASED");
- llSetTimerEvent(0);
- }
- if ( level & edge & CONTROL_BACK) //back button pressed
- {
- angmotor.y = -2;
- vector v=llRot2Fwd(llGetRot());
- llPushObject(llGetKey(),-v,ZERO_VECTOR,1);
- angflag = 1;
- // llSay(0,"BACK PRESSED");
- }
- if (~level & edge & CONTROL_BACK){ //back button released
- angflag = 1;
- // llSay(0,"BACK RELEASED");
- }
- if( level & edge & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
- {
- angmotor.z = -1;
- angmotor.x = .5;
- angflag = 1;
- // llSay(0,"RIGHT PRESSED");
- llSetRot(llGetRot()*llEuler2Rot(<0,0,-PI/4>));
- }
- if(~level & edge & (CONTROL_RIGHT|CONTROL_ROT_RIGHT)){
- angflag = 1; //default is to go to zero
- // llSay(0,"RIGHT RELEASED");
- }
- if( level & edge & (CONTROL_LEFT|CONTROL_ROT_LEFT))
- {
- angmotor.z = 1;
- angmotor.x = -0.5;
- angflag = 1;
- // llSay(0,"LEFT PRESSED");
- llSetRot(llGetRot()*llEuler2Rot(<0,0,PI/4>));
- }
- if(~level & edge & (CONTROL_LEFT|CONTROL_ROT_LEFT)){
- angflag = 1;
- // llSay(0,"LEFT RELEASED");
- }
- //BUG NUMBER THREE (mantis issue 6039)
- //The angular motor rotates around the global region axis
- //to make the vehicle pitch around it's local axis
- //I had do multiply the angular motor by llGetRot()
- // if (angflag)
- // llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angmotor*llGetRot());
- } //control
- timer()
- {
- llSetPos(llGetPos()+v);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement