Advertisement
Gayngel

vehicle script

Apr 18th, 2023 (edited)
1,835
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. default
  2. {  
  3.     state_entry()
  4.     {
  5.        
  6.         llPassCollisions(TRUE);
  7.         llSetSitText("Ride");  
  8.         vector input = <0.0, 0.0, 270.0> * DEG_TO_RAD;
  9.         rotation rot = llEuler2Rot(input);
  10.         llSitTarget(<0.6, 0.03, 0.20>, llGetRot()*rot);
  11.         llSetCameraEyeOffset(<-5.0, -0.00, 2.0>);
  12.         llSetCameraAtOffset(<3.0, 0.0, 2.0>);
  13.         llSetVehicleType(VEHICLE_TYPE_CAR);
  14.         llSetVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP |
  15. VEHICLE_FLAG_LIMIT_ROLL_ONLY | VEHICLE_FLAG_LIMIT_MOTOR_UP);
  16.         llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.2);
  17.         llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.80);
  18.         llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 0.10);
  19.         llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.10);
  20.         llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0);
  21.         llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.5);  // how far the vehicle travels after releasing the control buttons
  22.         llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1.0);
  23.         llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.8);
  24.         llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE,
  25. <100.0, 2.0, 1000.0>);
  26.         llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE,
  27.  <1000.0, 1000.0, 1000.0>);
  28.         llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY,
  29. 5.00);
  30.         llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE,
  31. 10.00);
  32.         llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 0.0);
  33.         llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.0);
  34.         llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 0.0);
  35.        llSetVehicleFloatParam( VEHICLE_HOVER_HEIGHT, 0 );
  36.        llSetVehicleFloatParam( VEHICLE_HOVER_EFFICIENCY, 0 );
  37.        llSetVehicleFloatParam( VEHICLE_HOVER_TIMESCALE, 1000 );
  38.        llSetVehicleFloatParam( VEHICLE_BUOYANCY, 0 );
  39.         llCollisionSound("", 0.0);
  40.     }
  41.  
  42.  
  43.    
  44.     changed(integer change)
  45.     {
  46.        
  47.         if (change & CHANGED_LINK)
  48.         {
  49.            
  50.             key agent = llAvatarOnSitTarget();
  51.  
  52.            
  53.             if (agent)
  54.             {
  55.                
  56.                     llSetStatus(STATUS_PHYSICS, TRUE);
  57.                    
  58.                     llRequestPermissions(agent,
  59. PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);
  60.                    
  61.                     llMessageLinked(LINK_SET, 0, "get_on", "");
  62.                
  63.             }
  64.            
  65.             else
  66.             {
  67.                
  68.                 llSetStatus(STATUS_PHYSICS, FALSE);
  69.                 llReleaseControls();
  70.                 llStopAnimation("motorcycle_sit");
  71.                
  72.                 llMessageLinked(LINK_SET, 0, "idle", "");
  73.             }
  74.         }
  75.  
  76.     }
  77.  
  78.    
  79.     run_time_permissions(integer perm)
  80.     {
  81.         if (perm)
  82.         {
  83.            
  84.             llStartAnimation("motorcycle_sit");
  85.             llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT |
  86. CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT, TRUE, FALSE);
  87.         }
  88.     }
  89.  
  90.    
  91.     control(key id, integer level, integer edge)
  92.     {
  93.        
  94.         vector angular_motor;
  95.  
  96.         if(level & CONTROL_FWD)
  97.         {
  98.            
  99.             llOwnerSay("forward");
  100.            
  101.             llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION,
  102. <15,0,0>);  //speed of car
  103.  
  104.         }
  105.         if(level & CONTROL_BACK)
  106.         {
  107.             llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION,
  108. <-15,0,0>);
  109.         }
  110.        
  111.         if(level & CONTROL_FWD|| level & CONTROL_BACK &&  level & (CONTROL_RIGHT|CONTROL_ROT_RIGHT))
  112.         {
  113.                
  114.             angular_motor.x += PI*6;
  115.             angular_motor.z -= PI*6;
  116.            
  117.           //  angular_motor.x += PI;
  118.            // angular_motor.z -= PI;
  119.            
  120.         }
  121.        
  122.        
  123.      
  124.        
  125.        if(level & CONTROL_FWD|| level & CONTROL_BACK && level & (CONTROL_LEFT|CONTROL_ROT_LEFT))
  126.        {
  127.            
  128.              
  129.             angular_motor.x -= PI*6;
  130.             angular_motor.z += PI*6;
  131.            
  132.            
  133.         }
  134.        
  135.        
  136.      
  137.    
  138.        
  139.        
  140.         if(level & (CONTROL_UP))
  141.         {
  142.             angular_motor.y -= 50;
  143.         }
  144.  
  145.         if((edge & CONTROL_FWD) && (level & CONTROL_FWD))
  146.         {
  147.            
  148.             llMessageLinked(LINK_SET, 0, "burst", "");
  149.         }
  150.         if((edge & CONTROL_FWD) && !(level & CONTROL_FWD))
  151.         {
  152.             llMessageLinked(LINK_SET, 0, "stop", "");
  153.         }
  154.  
  155.        
  156.         llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION,
  157. angular_motor);
  158.     }
  159.  
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement