move(vector targ)
{
if (llVecDist(llGetPos(), targ) < 55.0)
{
llMoveToTarget(targ, 1.0);
}
else
{
float targfar = llVecDist(llGetPos(),targ);
llMoveToTarget(llGetPos() + <targfar/3,targfar/3,targfar/3>, 0.2);// I'm very confused what to do here.. I want to make it so that it loops moving to the target, even if it's farther than 55 m away.. but i don't know what to do.
}
}
vector target;
string MySim;
vector MyPos;
default
{
on_rez(integer sp)
{
llResetScript();
}
state_entry()
{
llListen(2,"",llGetOwner(),""
;llSetTimerEvent(1);
llSleep(2);
llSetTimerEvent(600);
}
timer()
{
MyPos = llGetPos();
MySim = llGetRegionName();
llOwnerSay("Saved to Position: "+(string)MyPos+" and Region: "+MySim+"."
;}
listen(integer c, string n, key id, string msg)
{
if (msg == "recall reset"||msg == "reset"

{
llResetScript();
}
if (msg == "recall save"

{
llSetTimerEvent(0);
llOwnerSay("Saving last location..."
;llOwnerSay("Saved: Position "+(string)MyPos+" Region: "+MySim+"."
;llOwnerSay("No longer updating until you say /2 recall reset or /2 reset"
;}
if (msg == "recall"

{
llOwnerSay("Opening up last location on map."
;llMapDestination(MySim,MyPos,ZERO_VECTOR);
llOwnerSay("Click teleport to get started with your recall."
;state movement;
}
}
}
state movement
{
changed(integer change)
{
if (change & CHANGED_REGION&llGetRegionName() == MySim)
{
target = MyPos;
llTarget(target, 0.5);
move(target);
}
}
not_at_target()
{
move(target);
}
at_target(integer tnum, vector tpos, vector opos)
{
llTargetRemove(tnum);
llMoveToTarget(llGetPos(), 0.2);
llOwnerSay("Position restored."
;llStopMoveToTarget();
llResetScript();
state default;
}
}