/////////////////////////////////////////////////////////////////////////// // Copyright (C) Wizardry and Steamworks 2011 - License: GNU GPLv3 // // Please see: http://www.gnu.org/licenses/gpl.html for legal details, // // rights of fair usage, the disclaimer and warranty conditions. // /////////////////////////////////////////////////////////////////////////// float speed = .5; default { state_entry() { llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS); llSetTimerEvent(.5); } control(key id, integer level, integer edge) { vector impulse = < .0, .0, .0 > ; if (level & CONTROL_UP) { impulse += < 0, 0, speed > ; } if (level & CONTROL_DOWN) { impulse += < 0, 0, -speed > ; } if (level & CONTROL_FWD) { impulse += < speed, 0, 0 > ; } if (level & CONTROL_BACK) { impulse += < -speed, 0, 0 > ; } if (level & CONTROL_LEFT) { impulse += < 0, speed, 0 > ; } if (level & CONTROL_RIGHT) { impulse += < 0, -speed, 0 > ; } llApplyImpulse((vector) impulse, 1); } timer() { if (llGetAgentInfo(llGetOwner()) & AGENT_FLYING) { llSetForce(( < .0, .0, 9.81 > * llGetMass()), 0); jump flight_off; } llSetForce( < .0, .0, .0 > , 0);@flight_off; llSetTimerEvent(.5); } listen(integer channel, string name, key id, string message) { if (message == "fly on") { llOwnerSay("Flight engaged..."); llRequestPermissions(llGetOwner(), 4); llSetTimerEvent(.5); return; } if (message == "fly off") { llOwnerSay("Flight disengaged..."); llSetTimerEvent(0); llSetForce( < .0, .0, .0 > , 0); llReleaseControls(); return; } if (message == "fly faster") { llOwnerSay("Flying faster..."); speed += .5; return; } if (message == "fly slower") { llOwnerSay("Flying slower..."); speed -= .5; return; } } run_time_permissions(integer permissions) { if (permissions & PERMISSION_TAKE_CONTROLS) { llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_UP | CONTROL_DOWN, 1, 1); llListen(0, "", llGetOwner(), ""); } } }