This will need a skate animation :D
string gAnimName = "skate012";
float gStopTimeout = 1.0;
integer gInTimeout;
default
{
state_entry()
{
//llSay(0, "Hello, Avatar!");
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH );
gInTimeout = FALSE;
}
//touch_start(integer total_number)
//{
// llSay(0, "Touched.");
//}
run_time_permissions(integer perms) {
llTakeControls(CONTROL_FWD | CONTROL_BACK, TRUE, TRUE);
}
on_rez(integer param) {
llResetScript();
}
control(key name, integer levels, integer edges) {
//llSay(0, "control");
if (edges & levels & (CONTROL_FWD | CONTROL_BACK)) {
//llSay(0, "Debug: on");
llStartAnimation(gAnimName);
gInTimeout = FALSE;
llSetTimerEvent(gStopTimeout/2);
}
if (edges & ~levels & (CONTROL_FWD | CONTROL_BACK)) {
//llSay(0, "Debug: off");
//llStopAnimation(gAnimName);
gInTimeout = TRUE;
llSetTimerEvent(gStopTimeout);
}
}
timer() {
//llSay(0,"Timer");
if (gInTimeout) {
//llSay(0,"intimeout");
llStopAnimation(gAnimName);
llSetTimerEvent(0.0);
}
else {
//llSay(0,"notintimeout");
llStartAnimation(gAnimName);
}
}
attach(key id) {
//llSay(0, "ok...");
integer perm = llGetPermissions();
if (id != NULL_KEY) {
//llSay(0, "yep...");
if (! (perm & PERMISSION_TRIGGER_ANIMATION & PERMISSION_TAKE_CONTROLS)) {
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION |
PERMISSION_TAKE_CONTROLS |
PERMISSION_ATTACH);
}
}
else {
//llSay(0, "nope...");
if (perm & PERMISSION_TRIGGER_ANIMATION) {
llStopAnimation(gAnimName);
}
}
}
}