Advertisement
Guest User

Walk Vehicle

a guest
May 21st, 2011
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. list animation_order;
  2. vector motor;
  3. vector ang_vel;
  4.  
  5. integer dec;
  6.  
  7. animate(string name)
  8. {
  9.     integer index;
  10.     if((index=llListFindList(animation_order,[name]))==-1)
  11.     {
  12.         animation_order+=[name];
  13.         llStartAnimation(name);
  14.     }
  15.     else
  16.     {
  17.         //animation_order=llDeleteSubList(animation_order,index,index);
  18.     }
  19.    
  20. }
  21.  
  22. deanimate(string name)
  23. {
  24.     integer index;
  25.     if((index=llListFindList(animation_order,[name]))==-1)
  26.     {
  27.         //animation_order+=[name];
  28.     }
  29.     else
  30.     {
  31.         animation_order=llDeleteSubList(animation_order,index,index);
  32.         llStopAnimation(name);
  33.     }
  34.    
  35. }
  36. warpPos(vector pos){
  37.  vector start_pos = llGetPos();
  38.  llSetLinkPrimitiveParamsFast(-1,[PRIM_POSITION, <1.304382E+19, 1.304382E+19, 0.0>, PRIM_POSITION, pos, PRIM_POSITION, start_pos, PRIM_POSITION, pos]);
  39. }
  40.  
  41. default
  42. {
  43.     state_entry()
  44.     {
  45.         llCollisionSound("",0.0);
  46.         llSitTarget(<0,0,-.55>,ZERO_ROTATION);
  47.         llListen(-59754,"","","");
  48.     }
  49.     listen(integer chan, string name, key id, string msg)
  50.     {
  51.         warpPos((vector)msg);
  52.     }
  53.     changed(integer change)
  54.     {
  55.         if(change&CHANGED_LINK)
  56.         {
  57.             if(llAvatarOnSitTarget()==llGetOwner())
  58.             {
  59.                 llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_COLOR, ALL_SIDES,<1,1,1>,0.0]);
  60.                 llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION|PERMISSION_TAKE_CONTROLS);
  61.                 animate("stand");
  62.                 llSetStatus(STATUS_ROTATE_X|STATUS_ROTATE_Y, FALSE);
  63.                 llSetStatus(STATUS_PHYSICS, TRUE);
  64.                 llSetVehicleType(VEHICLE_TYPE_CAR);
  65.                 llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 1.0);
  66.                 llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE,<.14,.14,2000>);
  67.                 llTakeControls(CONTROL_FWD|CONTROL_LEFT|CONTROL_RIGHT|CONTROL_UP|CONTROL_DOWN|CONTROL_UP|CONTROL_BACK|CONTROL_ROT_RIGHT|CONTROL_ROT_LEFT,1,1);
  68.                 llSetVehicleFlags(VEHICLE_FLAG_MOUSELOOK_STEER);
  69.                 llSetVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP);
  70.                 llRemoveVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY);
  71.                 //llSetTimerEvent(0.11); //Mouselook Control
  72.                 //llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY,0.);
  73.             }
  74.             else if(llAvatarOnSitTarget()==NULL_KEY)
  75.             {
  76.                 llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_COLOR, ALL_SIDES,<1,1,1>,1.0]);
  77.                 llSetStatus(STATUS_PHYSICS, FALSE);
  78.                 llReleaseControls();
  79.                 llSetVehicleType(VEHICLE_TYPE_NONE);
  80.             }
  81.             else
  82.             {
  83.                 llUnSit(llAvatarOnSitTarget());
  84.             }
  85.         }
  86.     }
  87.     timer()
  88.     {
  89.         if(llGetAgentInfo(llGetOwner())&AGENT_MOUSELOOK)
  90.         {
  91.             if(!(dec))
  92.             {
  93.                 llSetVehicleFlags(VEHICLE_FLAG_CAMERA_DECOUPLED);
  94.                 dec=1;
  95.             }
  96.             llRotLookAt(((rotation)llList2String(llGetObjectDetails(llGetOwner(), [OBJECT_ROT]),0))*llEuler2Rot(<0,0,10*DEG_TO_RAD>),0.5,0.1);
  97.         }
  98.         else if(dec)
  99.         {
  100.             llRemoveVehicleFlags(VEHICLE_FLAG_CAMERA_DECOUPLED);
  101.             dec=0;
  102.         }
  103.     }
  104.            
  105.     control(key id, integer level, integer edge)
  106.     {
  107.         motor=<0.,0.,-10.>;
  108.         ang_vel=<0.,0.,0.>;
  109.         llSetForce(<0.,0.,0.>,1);
  110.         if((level&CONTROL_FWD)&&!(edge&CONTROL_FWD))
  111.         {
  112.             deanimate("run");
  113.             deanimate("stand");
  114.             animate("walk");
  115.             if(llGetAgentInfo(llGetOwner())&AGENT_ALWAYS_RUN)
  116.             {
  117.                 motor+=<50.,0.,0.>;
  118.             }
  119.             else
  120.             {
  121.                 motor+=<25.,0.,0.>;
  122.             }
  123.         }
  124.         else if((level&CONTROL_BACK)&&!(edge&CONTROL_BACK))
  125.         {
  126.             deanimate("walk");
  127.             deanimate("stand");
  128.             animate("run");
  129.             if(llGetAgentInfo(llGetOwner())&AGENT_ALWAYS_RUN)
  130.             {
  131.                 motor-=<50.,0.,0.>;
  132.             }
  133.             else
  134.             {
  135.                 motor-=<25.,0.,0.>;
  136.             }
  137.         }
  138.         else
  139.         {
  140.             deanimate("walk");
  141.             deanimate("run");
  142.             animate("stand");
  143.         }
  144.         if(!(level&CONTROL_FWD)&&(edge&CONTROL_FWD)||!(level&CONTROL_BACK)&&(edge&CONTROL_BACK))
  145.         {
  146.             deanimate("run");
  147.             deanimate("walk");
  148.             animate("stand");
  149.         }
  150.         if((level&CONTROL_LEFT)&&!(edge&CONTROL_LEFT))
  151.         {
  152.             //motor+=<0.,70.,0.>;
  153.             llRotLookAt(llGetRot()*llEuler2Rot(<0,0,10*DEG_TO_RAD>),0.5,0.1);
  154.         }
  155.         if((level&CONTROL_RIGHT)&&!(edge&CONTROL_RIGHT))
  156.         {
  157.             //motor-=<0.,70.,0.>;
  158.             llRotLookAt(llGetRot()*llEuler2Rot(<0,0,-10*DEG_TO_RAD>),0.5,0.1);
  159.         }
  160.         if((level&CONTROL_ROT_LEFT)&&!(edge&CONTROL_ROT_LEFT))
  161.         {
  162.             llRotLookAt(llGetRot()*llEuler2Rot(<0,0,10*DEG_TO_RAD>),0.5,0.1);
  163.         }
  164.         if((level&CONTROL_ROT_RIGHT)&&!(edge&CONTROL_ROT_RIGHT))
  165.         {
  166.             llRotLookAt(llGetRot()*llEuler2Rot(<0,0,-10*DEG_TO_RAD>),0.5,0.1);
  167.         }
  168.         if((level&CONTROL_UP)&&(edge&CONTROL_UP))
  169.         {
  170.             llApplyImpulse(<0.,0.,20.>,1);
  171.         }
  172.        
  173.         //llApplyRotationalImpulse(ang_vel,1);
  174.         //llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION,ang_vel);
  175.         llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION,motor);
  176.     }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement