De DigiWiki.
// example_controls.lsl // ready jack // 21 jan 2006 // v1.0
// Put this in an attachment. When you put the script in or make
// a change, you have to re-attach the object to activate the controls.
default
{
attach(key who)
{
if (who == NULL_KEY) {
// detached
if (llGetPermissions() & PERMISSION_TAKE_CONTROLS) {
llReleaseControls();
}
} else {
llRequestPermissions(who, PERMISSION_TAKE_CONTROLS);
}
}
run_time_permissions(integer perms)
{
integer desired_controls =
CONTROL_FWD |
CONTROL_BACK |
CONTROL_LEFT |
CONTROL_RIGHT |
CONTROL_ROT_LEFT |
CONTROL_ROT_RIGHT |
CONTROL_UP |
CONTROL_DOWN |
CONTROL_LBUTTON |
CONTROL_ML_LBUTTON
;
if (perms & PERMISSION_TAKE_CONTROLS) {
llTakeControls(desired_controls, TRUE, TRUE);
}
}
control(key id, integer down, integer new)
{
integer pressed = down & new;
integer held = down & ~new;
integer released = ~down & new;
if (pressed & CONTROL_LBUTTON) llOwnerSay("click");
if (held & CONTROL_FWD) llOwnerSay("forward held");
// etc.
}
}