targeting.MKIII

By: bdhtrn on Sep 26th, 2011  |  syntax: Linden Scripting  |  size: 2.40 KB  |  hits: 159  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. list noobkeys;
  2. list noobnames;
  3.  
  4. GOTCHASUCKER(key target){
  5.     // [endless possibilities]
  6.     llOwnerSay((string)target);
  7. }
  8.  
  9. dispAvFeed(){
  10.     string targetlist="";
  11.     key thisnub;
  12.     string tgtname;
  13.     vector tgtpos;
  14.     integer dist=0;
  15.     integer i;
  16.     noobnames=[];
  17.     for(i=0;i<llGetListLength(noobkeys);i++){
  18.         thisnub=llList2Key(noobkeys,i);
  19.         list tgtintel=llGetObjectDetails(thisnub,[OBJECT_NAME,OBJECT_POS]);
  20.         tgtname=llList2String(tgtintel,0);
  21.         tgtpos=llList2Vector(tgtintel,1);
  22.         dist=(integer)llVecDist(llGetPos(),tgtpos);
  23.         targetlist+=tgtname+" ["+(string)dist+"]\n";
  24.         noobnames+=tgtname;
  25.     }
  26.     llSetText(targetlist,<1,1,1>,1);
  27. }
  28.  
  29. updateList(integer flag, list nubs){
  30.     integer i;
  31.     string currnub; integer nubFound;
  32.     for(i=0;i<llGetListLength(nubs);i++){
  33.         currnub=llList2String(nubs,i);
  34.         nubFound=llListFindList(noobkeys,[currnub]);
  35.         if(flag>0 && nubFound==-1 && currnub!=llGetOwner())
  36.             noobkeys+=currnub;
  37.         else if(flag==0 && nubFound>-1)
  38.             noobkeys=llDeleteSubList(noobkeys,nubFound,nubFound);
  39.     }
  40.     dispAvFeed();
  41. }
  42.  
  43. default{
  44.     on_rez(integer param){
  45.         llResetScript();
  46.     }
  47.     state_entry(){
  48.         noobkeys=[];
  49.         llSetText("",<0,0,0>,1);
  50.         llListen(-777777777,"","","");
  51.         llTriggerSound("76c78607-93f9-f55a-5238-e19b1a181389",1);
  52.         llListen(-19,"","","");
  53.         llSetTimerEvent(5);
  54.     }
  55.     listen(integer chan,string who,key id,string msg){
  56.         integer feedflag;
  57.         if(chan==-19){
  58.             integer tgtindex=llListFindList(noobnames,[msg]);
  59.             key target=llList2Key(noobkeys,tgtindex);
  60.             GOTCHASUCKER(target);
  61.         }
  62.         else{
  63.             //llOwnerSay(msg);
  64.             list nubs=llParseString2List(msg,[","],[]);
  65.             feedflag=(integer)llList2String(nubs,1);
  66.             nubs=llDeleteSubList(nubs,0,1);
  67.             updateList(feedflag,nubs);
  68.         }
  69.     }
  70.     changed(integer chg){
  71.         if(chg & CHANGED_REGION){
  72.             noobkeys=[];
  73.             llSetText("",<0,0,0>,1);
  74.             llTriggerSound("76c78607-93f9-f55a-5238-e19b1a181389",1);
  75.         }
  76.     }
  77.     touch_start(integer num){
  78.         if(llGetListLength(noobnames)>0)
  79.             llDialog(llGetOwner(),"Let's annoy someone.",noobnames,-19);
  80.     }
  81.     timer(){
  82.         dispAvFeed();
  83.     }
  84. }