User:BUTTONpUSHER Jones/pet protocol/follow

From Second Life Wiki
< User:BUTTONpUSHER Jones‎ | pet protocol
Revision as of 00:07, 18 April 2007 by BUTTONpUSHER Jones (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
// follow script
// 

startup()
{
    llSensorRemove();
    llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y, TRUE);
    llSetStatus(STATUS_ROTATE_Z, TRUE);
    llSetStatus(STATUS_PHANTOM, TRUE);
    llSensorRepeat( "", llGetOwner(), AGENT, 100, PI, 0.5 );
}

default
{
    state_entry()
    {
        startup();
    }    
    on_rez(integer param)
    {
        startup();
    }
    
    link_message(integer sender_num, integer num, string str, key id)
    {
        if (str == "follow")
            llWhisper(0, "I have been commanded to follow");
            
                llSensorRepeat( "", id, AGENT, 100, PI, 0.5 );

    }

    no_sensor()
    {
        llSetTimerEvent(30); // the ride may be lost, die in 30 seconds
    }
    timer(){
        llWhisper(0, "cannot find target ");
        //llDie();
    } // haven't detected the user for 30 seconds, so delete the ride
    sensor( integer total_number )
    {
        vector vTarget = llDetectedPos(0);
        rotation rTarget = llDetectedRot(0);
        vector vOffset = <-2.0,0,-0.2>; // offset from the agent's center

        vector vDestination = vTarget + vOffset * rTarget;
//        llLookAt(vDestination, 2, 0.2);
        
        llMoveToTarget(vDestination, .1);

        llLookAt(vTarget + <0,0,vOffset.z>, 1, 0.1);

//        llMoveToTarget(vTarget, 0.5);
        llSetTimerEvent(0.0); // turns off the die timer
    }
    touch_start(integer total_number)
    {
        llSay(0, "stopit.");
    }
}