Advertisement
salahzar

veicolo volante NON fisico (meno lag e più affidabile)

Feb 2nd, 2014
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. float Buoyancy=0;
  2. vector v;
  3.  
  4. default
  5. {
  6.     state_entry()
  7.     {
  8.         llSay(0,"Ready");
  9.         llSetStatus(STATUS_PHYSICS, FALSE);
  10.         llSetSitText("Commands");
  11.         llCollisionSound("",0.0);
  12.         llSitTarget(<-0.3, 0.0, 0.8>, ZERO_ROTATION);
  13.         vector pos=llGetPos();      //position to initialize global hover height
  14.         //gHeight=pos.z;
  15.         llSetRot(ZERO_ROTATION);  
  16.         llSetBuoyancy(0.99);
  17.  
  18.  llSetStatus(STATUS_PHYSICS, FALSE);
  19.     }
  20.  
  21.     on_rez(integer pram)
  22.     {
  23.         llSetPos(llGetPos()+<0,0,1.5>);     //jump up to clear the ground a little bit
  24.         llResetScript();
  25.     }
  26.     changed(integer change)
  27.     {
  28.         if (change & CHANGED_LINK)
  29.         {
  30.             if (llAvatarOnSitTarget()!=NULL_KEY)
  31.             {
  32.                    
  33.                     llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);
  34.                        
  35.             }
  36.             else
  37.             {
  38.                      
  39.                       llSay(0,"fix it");
  40.                 llSetStatus(STATUS_PHYSICS, FALSE);
  41.                 llSetRot(ZERO_ROTATION);
  42.                 vector angles=llRot2Euler(llGetRot());
  43.                 llSetRot(llEuler2Rot(<0,0,angles.z>));
  44.                 llReleaseControls();
  45.                // llStopAnimation(sitanim);
  46.             }
  47.         }
  48.  
  49.     }
  50.  
  51.     run_time_permissions(integer perm)
  52.     {
  53.         if (perm)
  54.         {
  55.             if (perm & PERMISSION_TRIGGER_ANIMATION)
  56.             {
  57.                 llStopAnimation("sit");
  58.                // llStartAnimation(sitanim);
  59.                 llSetStatus(STATUS_PHYSICS, TRUE);
  60.                 //gHeight+=2.0;       //bounce up a bit to get away from obstacles
  61.                
  62.             }
  63.             if (perm & PERMISSION_TAKE_CONTROLS)
  64.                 llTakeControls(
  65.                     CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT |
  66.                     CONTROL_BACK | CONTROL_FWD | CONTROL_UP | CONTROL_DOWN,
  67.                 TRUE, FALSE);
  68.         }
  69.     }
  70.     control(key id, integer level, integer edge)
  71.     {
  72.         vector angmotor=<0,0,0>;
  73.         integer angflag=0;
  74.  
  75.         if (level &  edge & CONTROL_UP)  //page up pressed
  76.         {
  77.             //gHeight += 1.0;
  78.             Buoyancy+=0.2;
  79.          //    llSetVehicleFloatParam(VEHICLE_BUOYANCY, Buoyancy);
  80.        //  llSetBuoyancy(Buoyancy);
  81.          llSetPos(llGetPos()+<0,0,1>);
  82.           // llSay(0,"UP  "+(string)llGetPos());
  83.         }
  84.         if ( level & edge & CONTROL_DOWN)  //page down pressed
  85.         {
  86.             //gHeight -= 1.0;
  87.         //    if (gHeight<llGround(ZERO_VECTOR)+2.0) gHeight=llGround(ZERO_VECTOR)+2.0;
  88.             llSetPos(llGetPos()-<0,0,1>);
  89.        //    llSay(0,"DOWN "+(string)llGetPos());
  90.             Buoyancy-=0.2;
  91.             // llSetBuoyancy(Buoyancy);
  92.            //  llSetVehicleFloatParam(VEHICLE_BUOYANCY, Buoyancy);
  93.         }
  94.                      
  95.         if ( level & edge & CONTROL_FWD)   //foreward button pressed
  96.         {
  97.             angmotor.y = 2;
  98.             angflag = 1;
  99.             v=llRot2Fwd(llGetRot());
  100.            // llPushObject(llGetKey(),v,ZERO_VECTOR,1);
  101.            llSetPos(llGetPos()+5*v);
  102.        //     llSay(0,"FWD PRESSED");
  103.             llSetTimerEvent(0.5);
  104.         }
  105.         if (~level & edge & CONTROL_FWD){ //foreward button released
  106.             angflag = 1;
  107.        //     llSay(0,"FWD RELEASED");
  108.             llSetTimerEvent(0);
  109.         }
  110.         if ( level & edge & CONTROL_BACK)   //back button pressed
  111.         {
  112.             angmotor.y = -2;
  113.              vector v=llRot2Fwd(llGetRot());
  114.             llPushObject(llGetKey(),-v,ZERO_VECTOR,1);
  115.             angflag = 1;
  116.          //   llSay(0,"BACK PRESSED");
  117.         }
  118.         if (~level & edge & CONTROL_BACK){ //back button released
  119.             angflag = 1;
  120.        //     llSay(0,"BACK RELEASED");
  121.         }
  122.            
  123.         if( level & edge & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
  124.         {
  125.             angmotor.z = -1;
  126.             angmotor.x = .5;
  127.             angflag = 1;
  128.        //     llSay(0,"RIGHT PRESSED");
  129.             llSetRot(llGetRot()*llEuler2Rot(<0,0,-PI/4>));
  130.         }
  131.         if(~level & edge & (CONTROL_RIGHT|CONTROL_ROT_RIGHT)){
  132.             angflag = 1;        //default is to go to zero
  133.        //     llSay(0,"RIGHT RELEASED");
  134.         }
  135.  
  136.         if( level & edge & (CONTROL_LEFT|CONTROL_ROT_LEFT))
  137.         {
  138.             angmotor.z = 1;
  139.             angmotor.x = -0.5;
  140.             angflag = 1;
  141.        //     llSay(0,"LEFT PRESSED");
  142.             llSetRot(llGetRot()*llEuler2Rot(<0,0,PI/4>));
  143.         }
  144.         if(~level & edge & (CONTROL_LEFT|CONTROL_ROT_LEFT)){
  145.             angflag = 1;
  146.        //     llSay(0,"LEFT RELEASED");
  147.         }
  148.                 //BUG NUMBER THREE (mantis issue 6039)
  149.                 //The angular motor rotates around the global region axis
  150.                 //to make the vehicle pitch around it's local axis
  151.                 //I had do multiply the angular motor by llGetRot()
  152.       //  if (angflag)
  153.      //       llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angmotor*llGetRot());
  154.     } //control
  155.     timer()
  156.     {
  157.         llSetPos(llGetPos()+v);
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement