integer av = 0; integer avdet; key avid = "01010101-0101-0101-0101-010101010101"; float dist; float height; integer info; integer clickhold; string born; integer getborn; vector avpos; key freezekey; string freezename; default { attach(key id) { llResetScript(); } state_entry() { llSensorRepeat("",avid,AGENT,200000,7000*PI,0.001); llListen(9999,"",llGetOwner(),"Tell Key "+(string)(av+1)); } sensor(integer num_detected) { avdet = 1; string name = llDetectedName(av); avpos = llDetectedPos(av); vector pos = llGetPos(); dist = llVecDist(pos,avpos); height = avpos.z-pos.z; integer spos = llSubStringIndex(name," "); info = llGetAgentInfo(avid); name = llGetSubString(name,0,spos-1); if(getborn) { llRequestAgentData(avid,DATA_BORN); } if(avid != "01010101-0101-0101-0101-010101010101") { llSetText(name,<0,.4,1>,0.85); } if(avid == "01010101-0101-0101-0101-010101010101") { avdet = 0; llSetText(" ",<1,.42353,0>,0.85); llSetColor(<0.299,0.299,0.299>,ALL_SIDES); } else if(info & AGENT_AWAY) { llSetColor(<0,0.6,0>,ALL_SIDES); } else if((info & AGENT_MOUSELOOK) && (info & AGENT_FLYING)) { llSetColor(<1,0,0>,ALL_SIDES); } else if(info & AGENT_MOUSELOOK) { llSetColor(<1,0.95,0>,ALL_SIDES); } else if(info & AGENT_FLYING) { llSetColor(<0,0.81177,1>,ALL_SIDES); } else if(info & AGENT_IN_AIR) { llSetColor(<0,0.1098,1>,ALL_SIDES); } else if(dist <= 20) { llSetColor(<1,0.42353,0>,ALL_SIDES); } else { llSetColor(<.75,.75,.75>,ALL_SIDES); } } no_sensor() { avdet = 0; llSetText(" ",<1,0.42353,0>,0.85); llSetColor(<0.299,0.299,0.299>,ALL_SIDES); } touch_start(integer num_detected) { llSetTimerEvent(0.5); } touch_end(integer num_detected) { llSetTimerEvent(0.0); if(!clickhold && avdet) { llMessageLinked(LINK_SET,0,"",avid); } else { clickhold = 0; } } dataserver(key queryid, string data) { born = " \n [Born]: "+data; } timer() { if(avdet) { llMessageLinked(LINK_SET,50,"Getting extensive info on "+llKey2Name(avid)+"...",NULL_KEY); clickhold = 1; string name = llKey2Name(avid); string imsg = "[[Av Info]] \n [Name]: "+name; if(getborn) { imsg += born; } if(info & AGENT_AWAY) { imsg += " \n [Status]: Away"; } else if((info & AGENT_MOUSELOOK) && (info & AGENT_FLYING)) { imsg += " \n [Status]: Mouselook + Flying"; } else if(info & AGENT_MOUSELOOK) { imsg += " \n [Status]: Mouselook"; } else if(info & AGENT_FLYING) { imsg += " \n [Status]: Flying"; } else if(info & AGENT_IN_AIR) { imsg += " \n [Status]: In Air"; } else if(dist <= 20) { imsg += " \n [Status]: Within Chat Range"; } else { imsg += " \n [Status]: Outside Chat Range"; } imsg += " \n [Distance]: "+(string)dist; imsg += " \n [Relative Height]: "+(string)height; llDialog(llGetOwner(),imsg,["Done","Tell Key "+(string)(av+1)],9999); freezekey = avid; freezename = name; } llSetTimerEvent(0.0); } link_message(integer sender,integer num, string msg,key id) { if(num == -3 && !getborn) { getborn = 1; } else if(num == -3 && getborn) { getborn = 0; born = ""; } else if(num == 0) { avid = id; llSensorRepeat("",id,AGENT,200000,7000*PI,0.001); } } listen(integer channel, string name, key id, string msg) { llOwnerSay(freezename+"'s key is "+(string)freezekey+"."); } }