IZHRAH Posted May 12, 2015 Share Posted May 12, 2015 Hi can you suggest what's missing on my script? I was trying to make my Helicopter Lift Up. I tried using VEHICULAR_LINEAR_MOTOR_DIRECTION on the CONTROL_UP and CONTROL_DOWN but it doesn't work. float FORWARD_POWER = 50.0;float REVERSE_POWER = -15.0;float TURNING_RATIO = 5.0; // how sharply the vehicle turns. Less is more sharply. (0.1 to 10.0)default{ on_rez(integer start_param) { llResetScript(); } state_entry() { llSetSitText("Fly"); llSitTarget(<2.5, 0.4, 0.1>, ZERO_ROTATION); llSetCameraEyeOffset(<-12.0, 0.0, 5.0>); llSetCameraAtOffset(<1.0, 0.0, 2.0>); llSetVehicleFlags(0); llSetVehicleType(VEHICLE_TYPE_AIRPLANE); llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <1.0, 1.0, 1.0>); llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0.0, 0.0, 0.0>); llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 2.0); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.05); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 5.0); llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0.75); llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 2.0); llSetVehicleFloatParam(VEHICLE_BUOYANCY, 1.0); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 3.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10.0); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 2.0); llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 1.0); llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 0.1); llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.5); llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, ZERO_ROTATION); } changed(integer change) { if(change & CHANGED_LINK) { key avatar = llAvatarOnSitTarget(); if(avatar) { if(avatar != llGetOwner()) { llUnSit(avatar); } else { llSetStatus(STATUS_PHYSICS, TRUE); llRequestPermissions(avatar, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA); } } else { llSetStatus(STATUS_PHYSICS, FALSE); llReleaseControls(); } } } run_time_permissions(integer permission) { if(permission) { llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT | CONTROL_UP | CONTROL_DOWN, TRUE, FALSE); } } control(key id, integer level, integer edge) { integer reverse = 1; vector angular_motor; // get current speed vector velocity = llGetVel(); float speed = llVecMag(velocity); if(level & CONTROL_FWD) { llMessageLinked(LINK_ALL_CHILDREN, 0, "FORWARD", ""); llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <FORWARD_POWER, 0.0, 0.0>); reverse = 1; } if(level & CONTROL_BACK) { llMessageLinked(LINK_ALL_CHILDREN, 0, "REVERSE", ""); llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <REVERSE_POWER, 0.0, 0.0>); reverse = -1; } if(level & CONTROL_UP) { } if(level & CONTROL_DOWN) { } if(level & (CONTROL_RIGHT | CONTROL_ROT_RIGHT)) { angular_motor.z -= speed / TURNING_RATIO * reverse; angular_motor.x += 15; } if(level & (CONTROL_LEFT | CONTROL_ROT_LEFT)) { angular_motor.z += speed / TURNING_RATIO * reverse; angular_motor.x -= 15; } if(level == 0) { } llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor); }} Link to comment Share on other sites More sharing options...
IZHRAH Posted May 12, 2015 Author Share Posted May 12, 2015 Hi can you suggest what's missing on my script? I was trying to make my Helicopter Lift Up. I tried using VEHICULAR_LINEAR_MOTOR_DIRECTION on the CONTROL_UP and CONTROL_DOWN but it doesn't work. float FORWARD_POWER = 50.0;float REVERSE_POWER = -15.0;float TURNING_RATIO = 5.0; // how sharply the vehicle turns. Less is more sharply. (0.1 to 10.0)default{ on_rez(integer start_param) { llResetScript(); } state_entry() { llSetSitText("Fly"); llSitTarget(<2.5, 0.4, 0.1>, ZERO_ROTATION); llSetCameraEyeOffset(<-12.0, 0.0, 5.0>); llSetCameraAtOffset(<1.0, 0.0, 2.0>); llSetVehicleFlags(0); llSetVehicleType(VEHICLE_TYPE_AIRPLANE); llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <1.0, 1.0, 1.0>); llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <0.0, 0.0, 0.0>); llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 2.0); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.05); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 5.0); llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0.75); llSetVehicleFloatParam(VEHICLE_HOVER_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_HOVER_TIMESCALE, 2.0); llSetVehicleFloatParam(VEHICLE_BUOYANCY, 1.0); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 3.0); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 10.0); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5); llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 2.0); llSetVehicleFloatParam(VEHICLE_BANKING_EFFICIENCY, 1.0); llSetVehicleFloatParam(VEHICLE_BANKING_MIX, 0.1); llSetVehicleFloatParam(VEHICLE_BANKING_TIMESCALE, 0.5); llSetVehicleRotationParam(VEHICLE_REFERENCE_FRAME, ZERO_ROTATION); } changed(integer change) { if(change & CHANGED_LINK) { key avatar = llAvatarOnSitTarget(); if(avatar) { if(avatar != llGetOwner()) { llUnSit(avatar); } else { llSetStatus(STATUS_PHYSICS, TRUE); llRequestPermissions(avatar, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_CONTROL_CAMERA); } } else { llSetStatus(STATUS_PHYSICS, FALSE); llReleaseControls(); } } } run_time_permissions(integer permission) { if(permission) { llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_RIGHT | CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT | CONTROL_UP | CONTROL_DOWN, TRUE, FALSE); } } control(key id, integer level, integer edge) { integer reverse = 1; vector angular_motor; // get current speed vector velocity = llGetVel(); float speed = llVecMag(velocity); if(level & CONTROL_FWD) { llMessageLinked(LINK_ALL_CHILDREN, 0, "FORWARD", ""); llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <FORWARD_POWER, 0.0, 0.0>); reverse = 1; } if(level & CONTROL_BACK) { llMessageLinked(LINK_ALL_CHILDREN, 0, "REVERSE", ""); llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, <REVERSE_POWER, 0.0, 0.0>); reverse = -1; } if(level & CONTROL_UP) { } if(level & CONTROL_DOWN) { } if(level & (CONTROL_RIGHT | CONTROL_ROT_RIGHT)) { angular_motor.z -= speed / TURNING_RATIO * reverse; angular_motor.x += 15; } if(level & (CONTROL_LEFT | CONTROL_ROT_LEFT)) { angular_motor.z += speed / TURNING_RATIO * reverse; angular_motor.x -= 15; } if(level == 0) { } llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor); }} Link to comment Share on other sites More sharing options...
Freya Mokusei Posted May 12, 2015 Share Posted May 12, 2015 Why is this block empty? if(level & CONTROL_UP){} CONTROL_UP isn't set to do anything, so it won't work. Content here is what is missing. You'll probably want VEHICLE_LINEAR_MOTOR_DIRECTION along an axis in there. The inverse for CONTROL_DOWN. Link to comment Share on other sites More sharing options...
Rolig Loon Posted May 12, 2015 Share Posted May 12, 2015 How about setting angular_motor.y when you use CONTROL_UP and CONTROL_DOWN too? Link to comment Share on other sites More sharing options...
IZHRAH Posted May 12, 2015 Author Share Posted May 12, 2015 Yes I removed it, because the VEHICLE_LINEAR_MOTOR_DIRECTION with a vector value of 0,0, x won't work Link to comment Share on other sites More sharing options...
Freya Mokusei Posted May 12, 2015 Share Posted May 12, 2015 'kay, last guess. IZHRAH wrote: llSetVehicleFlags(0); llSetVehicleType(VEHICLE_TYPE_AIRPLANE); Why are you using VEHICLE_TYPE_AIRPLANE, which uses linear deflection for lift instead of VEHICLE_TYPE_BALLOON which has a hover-mode? Is AIRPLANE the most relevant vehicle type for your application? Link to comment Share on other sites More sharing options...
IZHRAH Posted May 12, 2015 Author Share Posted May 12, 2015 I see can you do a revision to it? Link to comment Share on other sites More sharing options...
arton Rotaru Posted May 12, 2015 Share Posted May 12, 2015 You have set a fixed hover height, llSetVehicleFloatParam(VEHICLE_HOVER_HEIGHT, 0.75); So it will try stay at this height no matter how hard you try to set linear motors on the z axis. Set VEHICLE_HOVER_HEIGHT to 0.0 and use the linear motor to lift, or set VEHICLE_HOVER_HEIGHT dynamically. Link to comment Share on other sites More sharing options...
IZHRAH Posted May 13, 2015 Author Share Posted May 13, 2015 Cool arton works perfect now - Thanks Link to comment Share on other sites More sharing options...
Recommended Posts
Please take a moment to consider if this thread is worth bumping.
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now