Hi,
Here is some code that might be able to help you
float cloakSpeed = 0.5;float alpha = 1;integer listener;string status = "STOP";default{ state_entry() { listener = llListen(0, "", llGetOwner(), ""); llSetTimerEvent(cloakSpeed); } state_exit() { llListenRemove(listener); llSetTimerEvent(0.0); } listen(integer channel, string name, key id, string message) { if(message == "lock") { status = "LOCKED"; } else if(message == "unlock") { status = "UNLOCKED"; } } timer() { if(status == "UNLOCKED") { alpha -= 0.1; llSay(0, (string)alpha); llSetAlpha(alpha, ALL_SIDES); if(alpha < 0.1) { alpha = 0; status = "LOCKED"; state cloaked; } } } touch_end(integer total_number) { status = "UNLOCKED"; }} state cloaked{ state_entry() { listener = llListen(0, "", llGetOwner(), ""); llSetTimerEvent(cloakSpeed); llSay(0, "Cloaked"); } state_exit() { llListenRemove(listener); llSetTimerEvent(0.0); } listen(integer channel, string name, key id, string message) { if(message == "lock") { status = "LOCKED"; } else if(message == "unlock") { status = "UNLOCKED"; } } timer() { if(status == "UNLOCKED") { alpha += 0.1; llSetAlpha(alpha, ALL_SIDES); if(alpha > 0.9) { alpha = 1; status = "LOCKED"; state default; } } } touch_end(integer total_number) { status = "UNLOCKED"; }}