integer av = 0; key avid; float dist; float height; integer info; integer clickhold; default { state_entry() { llSensorRepeat("",NULL_KEY,AGENT,200000,7000*PI,0.1); } sensor(integer num_detected) { avid = llDetectedKey(av); string name = llDetectedName(av); vector pos = llDetectedPos(av); dist = llVecDist(llGetPos(),pos); height = pos.z; integer spos = llSubStringIndex(name," "); info = llGetAgentInfo(avid); name = llGetSubString(name,0,spos-1); llSetText(name,<1,0.42353,0>,0.85); 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 { llSetColor(<1,0.42353,0>,ALL_SIDES); } } no_sensor() { avid = NULL_KEY; 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 && avid != NULL_KEY) { llOwnerSay("Action"); } else { clickhold = 0; } } timer() { if(avid) { clickhold = 1; string name = llKey2Name(avid); string imsg = "[[Av Info]] \n [Name]: "+name; 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 { imsg += " \n [Status]: Present"; } imsg += " \n [Distance]: "+(string)dist; imsg += " \n [Height]: "+(string)height; llDialog(llGetOwner(),imsg,["Done"],9999); } llSetTimerEvent(0.0); } }