vector startpos; vector gotopos; string saidname; integer type = AGENT; default { state_entry() { llListen(7,"",llGetOwner(),""); llListen(7,"",llGetKey(),""); } listen(integer channel,string name,key id,string msg) { if(msg == "bashtype agent") { type = AGENT; } if(msg == "bashtype active") { type = ACTIVE; } string bash = llToLower(llGetSubString(msg,0,4)); if(bash == "bash ") { startpos = llGetPos(); saidname = llToLower(llGetSubString(msg,5,llStringLength(msg))); llSensor("",NULL_KEY,type,200000,7000*PI); } } sensor(integer num_detected) { integer checknum = 0; string checkname = llToLower(llGetSubString(llDetectedName(checknum),0,llStringLength(saidname)-1)); while(checkname != saidname && checknum < num_detected - 1) { checknum += 1; checkname = llToLower(llGetSubString(llDetectedName(checknum),0,llStringLength(saidname)-1)); } if(checkname == saidname) { vector pos = llGetPos(); gotopos = llDetectedPos(checknum); float dist = llVecDist(pos,gotopos); vector fwd = llVecNorm(gotopos-pos); gotopos += fwd*(15-(dist/10)); float gototime = 0.1+(0.003*dist); llMoveToTarget(gotopos,gototime); llSleep(gototime*2); llMoveToTarget(startpos+<0,0,2>,0.05); llSleep(0.5); llStopMoveToTarget(); } else { llOwnerSay("Avatar not detected nearby."); } } link_message(integer sender,integer num, string msg,key id) { string bash = llToLower(llGetSubString(msg,0,4)); if(bash == "bash ") { startpos = llGetPos(); saidname = llToLower(llGetSubString(msg,5,llStringLength(msg))); llSensor("",NULL_KEY,type,200000,7000*PI); } } }