Difference between revisions of "Basic Target Scanner HUD"

From Second Life Wiki
Jump to navigation Jump to search
Line 13: Line 13:


key HUDtarget;
key HUDtarget;
integer HUDattachpoint=35;
integer HUDattachpoint=ATTACH_HUD_CENTER_1;
integer senseindex;
integer senseindex;
key photoReq;
key photoReq;
Line 90: Line 90:
     run_time_permissions(integer perms)
     run_time_permissions(integer perms)
     {
     {
         if ( perms & PERMISSION_TAKE_CONTROLS ) llTakeControls(CONTROL_BACK, FALSE, TRUE);
         if ( perms & (PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH) )
        if ( perms & PERMISSION_ATTACH ) llAttachToAvatar(HUDattachpoint);
        {
            llTakeControls(CONTROL_BACK, FALSE, TRUE);
            llAttachToAvatar(HUDattachpoint);
        }
     }
     }
}
}
</lsl>
</lsl>

Revision as of 13:45, 30 November 2012

This single prim HUD is just a button that scrolls through nearby players names, photos and user key. Drop it in a prim and touch the prim and you are set to go. Modify it to suit your particular use in another Hud, weapon, or whatever you want. <3 --Ackley Bing

<lsl> // Basic Target Scanner HUD // by Ackley Bing // // Drop this in a prim and touch

key HUDtarget; integer HUDattachpoint=ATTACH_HUD_CENTER_1; integer senseindex; key photoReq;

TargetInfo(key id) {

   llSetText(llToLower(llGetDisplayName(id))+"\n"+(string)id, <0.0, 1.0, 0.0>, 1.0);
   if ( id!=NULL_KEY )
   {
       photoReq=llHTTPRequest("http://world.secondlife.com/resident/" + (string)id, [], "");
       llOwnerSay("Current Target: secondlife:///app/agent/" + (string)id + "/inspect " + (string)id );
   }
   else
   {
       llSetTexture("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903", 0);
       llOwnerSay("No Target");
   }

}

default {

   state_entry()
   {
       llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH);
   }
   attach(key id)
   {
       if (id)
       {
           llSetScale(<0.1, 0.15, 0.1>);
           llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX, PRIM_HOLE_DEFAULT, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <2.0, 0.5, 1.0>, <0.0, 0.0, 0.0>, PRIM_ROT_LOCAL, <0.000000, -0.707107, 0.000000, 0.707107>, PRIM_COLOR, 0, <1.0,1.0,1.0>, 1.0, PRIM_COLOR, 1, <0.0,1.0,0.0>, 1.0, PRIM_COLOR, 3, <0.0,1.0,0.0>, 1.0, PRIM_COLOR, 2, <1.0,1.0,1.0>, 0.0, PRIM_COLOR, 4, <1.0,1.0,1.0>, 0.0]);
           llRotateTexture(270.0*DEG_TO_RAD,0);
           HUDattachpoint=llGetAttached();
           senseindex=0;
           llSensor("", "", AGENT, 128, TWO_PI);
       }
   }
   on_rez(integer param)
   {
       if ( !(llGetAttached()) ) llAttachToAvatar(HUDattachpoint);
   }
   touch_start(integer tsn)
   {
       if ( !(llGetAttached()) ) llAttachToAvatar(HUDattachpoint);
       senseindex=senseindex+(llDetectedTouchFace(0)==1)-(llDetectedTouchFace(0)==3);
       llSensor("", "", AGENT, 128, TWO_PI);
   }
   sensor(integer num)
   {
       senseindex=((senseindex<0)*(num-1))+((senseindex>=0)*(senseindex*(senseindex!=num)));
       HUDtarget=llDetectedKey(senseindex);
       TargetInfo(HUDtarget);
   }
   no_sensor()
   {
       senseindex=0;
       HUDtarget=NULL_KEY;
       TargetInfo(HUDtarget);
   }
   http_response(key request_id, integer status, list metadata, string body)
   {
       if( request_id == photoReq )
       {
           string photoID;
           integer StartIndex=llSubStringIndex(body,"<title>");
           integer EndIndex=llSubStringIndex(body,"</title>");
           if( StartIndex!=-1)
           {
               integer tempIndex=llSubStringIndex(body,"imageid")+18;
               if(tempIndex>17)photoID=llGetSubString(body,tempIndex,tempIndex+35);
           }
           if ( photoID==NULL_KEY || photoID=="" ) photoID="8dcd4a48-2d37-4909-9f78-f7a9eb4ef903";
           llSetTexture(photoID, 0);
       }
   }
   run_time_permissions(integer perms)
   {
       if ( perms & (PERMISSION_TAKE_CONTROLS | PERMISSION_ATTACH) )
       {
           llTakeControls(CONTROL_BACK, FALSE, TRUE);
           llAttachToAvatar(HUDattachpoint);
       }
   }

} </lsl>