integer channel = 0; default { state_entry() { llRequestPermissions(llGetOwner(),PERMISSION_TRACK_CAMERA); } run_time_permissions(integer perm) { if (perm & PERMISSION_TRACK_CAMERA) { state camera_captured; } } } state camera_captured { state_entry() { llListen(channel,"",llGetOwner(),""); llSetStatus(STATUS_PHYSICS,TRUE); llSetTimerEvent(0.1); } timer() { llMoveToTarget(llGetCameraPos()+<0.0,0.0,1.0>,0.1); } listen(integer channel, string name, key id, string message) { if (llToLower(message) == "hold") { state camera_captured_disabled; } } } state camera_captured_disabled { state_entry() { llListen(channel,"",llGetOwner(),""); llSetStatus(STATUS_PHYSICS,FALSE); } listen(integer channel, string name, key id, string message) { if (llToLower(message) == "follow") { state camera_captured; } } }