integer listen_chan = 1347453612; integer listenHandle; float sfx_vol = 1.0; integer timer_toggle = 0; float blink_timer = 0.1; integer blinker_face = 2; vector blink_working_a = <1.000, 0.255, 0.212>; vector blink_working_b = <0.067, 0.067, 0.067>; vector blink_live = <1.000, 0.255, 0.212>; vector blink_free = <0.180, 0.800, 0.251>; default { state_entry() { listenHandle = llListen(listen_chan, "", NULL_KEY, ""); integer perm = llGetPermissions(); llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS); } on_rez(integer start_param) { llResetScript(); } listen(integer channel, string name, key id, string message) { integer perm = llGetPermissions(); if (message == "obey") { llSetTimerEvent(blink_timer); llOwnerSay("Obey"); llLoopSound("leccy", sfx_vol); if(PERMISSION_TRIGGER_ANIMATION & perm) { llStartAnimation("zap_hold"); } if(PERMISSION_TAKE_CONTROLS & perm) { llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT | CONTROL_UP | CONTROL_DOWN | CONTROL_LBUTTON | CONTROL_ML_LBUTTON, TRUE, FALSE); } } else if (message == "obey_rel") { llOwnerSay("Obey!!"); if(PERMISSION_TRIGGER_ANIMATION & perm) { llStartAnimation("zap_release"); llStopAnimation("zap_hold"); } llSetTimerEvent(0.0); llSetColor(blink_live, blinker_face); llStopSound(); } else if (message == "release") { llOwnerSay("Release"); if(PERMISSION_TRIGGER_ANIMATION & perm) { llStopAnimation("zap_hold"); llStopAnimation("zap_release"); } if(PERMISSION_TAKE_CONTROLS & perm) { llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_ROT_LEFT | CONTROL_ROT_RIGHT | CONTROL_UP | CONTROL_DOWN | CONTROL_LBUTTON | CONTROL_ML_LBUTTON, TRUE, TRUE); } llSetColor(blink_free, blinker_face); } } timer() { if (timer_toggle == 0) { llSetColor(blink_working_a, blinker_face); timer_toggle = 1; } else if (timer_toggle == 1) { llSetColor(blink_working_b, blinker_face); timer_toggle = 0; } } }