Ok, I have something working. I edited Ezian Ecksol's Camjumper script to make it activate when one sits on the object and when at the location it removes and dies. I originally had it so people could touch it and then it would attach to them and take them to the desired location but forgot that only the owner can attach it. Here is the code:
// CamJumper (Dash)// © Ezian Ecksol. Use, modify, steal or sale as you like. Keep credits.//// usage: attach anywhere. Say /1 jc // to jump to cam position. works also to neighbour sims.// doesnt work most of the time if flying. integer jump_max=63;integer chan = 1;key user; integer wouldGoOffWorld(vector here, vector there) { if (there.x < 0. || there.x >= 256. || there.y < 0. || there.y >= 256.) return llEdgeOfWorld(here, there - here); else return FALSE;} jumpto(vector to, float time) { vector e; vector from; vector s; float d; integer i; integer j; vector from0; vector region0; vector region; from = llGetPos(); if (!wouldGoOffWorld(from, to)) { region0 = llGetRegionCorner()/256.; do { region = llGetRegionCorner()/256.; if (region != region0) { if (region.x > region0.x) to.x -= 256.; else if (region.x < region0.x) to.x += 256.; if (region.y > region0.y) to.y -= 256.; else if (region.y < region0.y) to.y += 256.; } from0 = from; region0 = region; d = llVecDist(from, to); j = (integer)(d / jump_max)+1; e = from + (to - from) / (float)j; //llOwnerSay("j="+(string)j+", d="+(string)d+", to="+(string)to); llMoveToTarget(e, time); llSleep(.5); from = llGetPos(); } while ((llVecDist(from, to) > 3.) && (llVecDist(from0, from) > 6.)); llStopMoveToTarget(); llRequestPermissions(user, PERMISSION_ATTACH); llDetachFromAvatar(); llDie(); } else llOwnerSay("Destination is - or would cross - off-world."); } default { state_entry() { llSetText("CLick to be taken to the Actigraph area", <0,1,0>,1); llSitTarget(<0,0,0.1>, llEuler2Rot(<0,0,90> * DEG_TO_RAD)/llGetRot()); } run_time_permissions(integer perm) { if (perm & PERMISSION_ATTACH) { llAttachToAvatar(ATTACH_LLARM); } if (perm & PERMISSION_TRACK_CAMERA) { llSay(-99, "gone"); llSetText("Moving...", <0,1,0>,1); llSetStatus(STATUS_PHYSICS, TRUE); llSetStatus(STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z,FALSE); jumpto(<363,203,97.7>, 1.05); } else llOwnerSay("Did not get permissions, failed."); } changed(integer change) { if(change & CHANGED_LINK) { key user = llAvatarOnSitTarget(); if(user) { llRequestPermissions(user, PERMISSION_TRACK_CAMERA); } } } on_rez(integer start_param) { llResetScript(); }}
Any constructive criticism accepted.