Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- list animation_order;
- vector motor;
- vector ang_vel;
- integer dec;
- animate(string name)
- {
- integer index;
- if((index=llListFindList(animation_order,[name]))==-1)
- {
- animation_order+=[name];
- llStartAnimation(name);
- }
- else
- {
- //animation_order=llDeleteSubList(animation_order,index,index);
- }
- }
- deanimate(string name)
- {
- integer index;
- if((index=llListFindList(animation_order,[name]))==-1)
- {
- //animation_order+=[name];
- }
- else
- {
- animation_order=llDeleteSubList(animation_order,index,index);
- llStopAnimation(name);
- }
- }
- warpPos(vector pos){
- vector start_pos = llGetPos();
- llSetLinkPrimitiveParamsFast(-1,[PRIM_POSITION, <1.304382E+19, 1.304382E+19, 0.0>, PRIM_POSITION, pos, PRIM_POSITION, start_pos, PRIM_POSITION, pos]);
- }
- default
- {
- state_entry()
- {
- llCollisionSound("",0.0);
- llSitTarget(<0,0,-.55>,ZERO_ROTATION);
- llListen(-59754,"","","");
- }
- listen(integer chan, string name, key id, string msg)
- {
- warpPos((vector)msg);
- }
- changed(integer change)
- {
- if(change&CHANGED_LINK)
- {
- if(llAvatarOnSitTarget()==llGetOwner())
- {
- llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_COLOR, ALL_SIDES,<1,1,1>,0.0]);
- llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION|PERMISSION_TAKE_CONTROLS);
- animate("stand");
- llSetStatus(STATUS_ROTATE_X|STATUS_ROTATE_Y, FALSE);
- llSetStatus(STATUS_PHYSICS, TRUE);
- llSetVehicleType(VEHICLE_TYPE_CAR);
- llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 1.0);
- llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE,<.14,.14,2000>);
- llTakeControls(CONTROL_FWD|CONTROL_LEFT|CONTROL_RIGHT|CONTROL_UP|CONTROL_DOWN|CONTROL_UP|CONTROL_BACK|CONTROL_ROT_RIGHT|CONTROL_ROT_LEFT,1,1);
- llSetVehicleFlags(VEHICLE_FLAG_MOUSELOOK_STEER);
- llSetVehicleFlags(VEHICLE_FLAG_NO_DEFLECTION_UP);
- llRemoveVehicleFlags(VEHICLE_FLAG_LIMIT_ROLL_ONLY);
- //llSetTimerEvent(0.11); //Mouselook Control
- //llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY,0.);
- }
- else if(llAvatarOnSitTarget()==NULL_KEY)
- {
- llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_COLOR, ALL_SIDES,<1,1,1>,1.0]);
- llSetStatus(STATUS_PHYSICS, FALSE);
- llReleaseControls();
- llSetVehicleType(VEHICLE_TYPE_NONE);
- }
- else
- {
- llUnSit(llAvatarOnSitTarget());
- }
- }
- }
- timer()
- {
- if(llGetAgentInfo(llGetOwner())&AGENT_MOUSELOOK)
- {
- if(!(dec))
- {
- llSetVehicleFlags(VEHICLE_FLAG_CAMERA_DECOUPLED);
- dec=1;
- }
- llRotLookAt(((rotation)llList2String(llGetObjectDetails(llGetOwner(), [OBJECT_ROT]),0))*llEuler2Rot(<0,0,10*DEG_TO_RAD>),0.5,0.1);
- }
- else if(dec)
- {
- llRemoveVehicleFlags(VEHICLE_FLAG_CAMERA_DECOUPLED);
- dec=0;
- }
- }
- control(key id, integer level, integer edge)
- {
- motor=<0.,0.,-10.>;
- ang_vel=<0.,0.,0.>;
- llSetForce(<0.,0.,0.>,1);
- if((level&CONTROL_FWD)&&!(edge&CONTROL_FWD))
- {
- deanimate("run");
- deanimate("stand");
- animate("walk");
- if(llGetAgentInfo(llGetOwner())&AGENT_ALWAYS_RUN)
- {
- motor+=<50.,0.,0.>;
- }
- else
- {
- motor+=<25.,0.,0.>;
- }
- }
- else if((level&CONTROL_BACK)&&!(edge&CONTROL_BACK))
- {
- deanimate("walk");
- deanimate("stand");
- animate("run");
- if(llGetAgentInfo(llGetOwner())&AGENT_ALWAYS_RUN)
- {
- motor-=<50.,0.,0.>;
- }
- else
- {
- motor-=<25.,0.,0.>;
- }
- }
- else
- {
- deanimate("walk");
- deanimate("run");
- animate("stand");
- }
- if(!(level&CONTROL_FWD)&&(edge&CONTROL_FWD)||!(level&CONTROL_BACK)&&(edge&CONTROL_BACK))
- {
- deanimate("run");
- deanimate("walk");
- animate("stand");
- }
- if((level&CONTROL_LEFT)&&!(edge&CONTROL_LEFT))
- {
- //motor+=<0.,70.,0.>;
- llRotLookAt(llGetRot()*llEuler2Rot(<0,0,10*DEG_TO_RAD>),0.5,0.1);
- }
- if((level&CONTROL_RIGHT)&&!(edge&CONTROL_RIGHT))
- {
- //motor-=<0.,70.,0.>;
- llRotLookAt(llGetRot()*llEuler2Rot(<0,0,-10*DEG_TO_RAD>),0.5,0.1);
- }
- if((level&CONTROL_ROT_LEFT)&&!(edge&CONTROL_ROT_LEFT))
- {
- llRotLookAt(llGetRot()*llEuler2Rot(<0,0,10*DEG_TO_RAD>),0.5,0.1);
- }
- if((level&CONTROL_ROT_RIGHT)&&!(edge&CONTROL_ROT_RIGHT))
- {
- llRotLookAt(llGetRot()*llEuler2Rot(<0,0,-10*DEG_TO_RAD>),0.5,0.1);
- }
- if((level&CONTROL_UP)&&(edge&CONTROL_UP))
- {
- llApplyImpulse(<0.,0.,20.>,1);
- }
- //llApplyRotationalImpulse(ang_vel,1);
- //llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION,ang_vel);
- llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION,motor);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement