Unpacker On Touch (NewAge)

From Second Life Wiki
Revision as of 20:56, 21 July 2010 by Asia Snowfall (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Unpacker On Touch Version 1.0

Just Copy and Paste into the object that contains your product and configure the script to your needs!

New Motto: Save and Sell!

<lsl> ///////////////////////////////// // NewAge Unpacker On Touch Script // By Asia Snowfall // Version 1.0 /////////////////////////////////

// Configure;

string Folder_Name = "New Folder"; // This will be the name of the folder sent to the user

string Show_Name_Of_Folder_On_Completion = "Yes"; // Change to No to not show the folder name when sent

string Show_Name_Message_On_Completion = "Folder will be named <folder>"; // If you have sent Show_Name_Of_Folder_On_Completion to Yes, change this message to however you want, Where you place the tag <folder> is where it will show folder name

string Hover_Text = "Click Me To Unpack Me"; // This text will show above the object to let the user know to click the object

string Message_On_Touch = "Sending your package now..."; // Message sent when object is rezzed

string Message_On_Sent_Completion = "Your package has been sent to you"; // Message sent when sending is complete

string Send_This_Script_To_Package_Owner = "No"; // Change to yes if you want this script to be sent to the user within the package folder

string Delete_On_Completion = "Yes"; // Change to no if you don't want the object to delete itself after package is sent

string Message_On_Fail_No_Items_To_Send = "Sending Failing, No items to send"; // Will only show if there are no items to send

///////////////////////////////// integer INVENTORY_TYPE = INVENTORY_ALL; integer FAIL = FALSE;


/////////////////////////////////

key llGetObjectOwner() {

   list details = llGetObjectDetails(llGetKey(), [OBJECT_OWNER]);
   return (key)llList2CSV(details);

}

llSendInventory(key id, integer inventory_type) {

   integer i = 0;
   integer items = llGetInventoryNumber(inventory_type);
   list to_send;
   string name;
   do
   {
       name = llGetInventoryName(inventory_type, i);
       if(llStringLength(name) > 0)
       {
           if(name == llGetScriptName() && llToLower(Send_This_Script_To_Package_Owner) == "yes")
           {
               to_send += name;
           }
           else if(name != llGetScriptName())
           {
               to_send += name;
           }
       }
   }while(i++<items);
   if(llGetListLength(to_send) > 0)
   {
       FAIL = FALSE;
       llGiveInventoryList(llGetObjectOwner(), Folder_Name, to_send);
       llInstantMessage(llGetObjectOwner(), Message_On_Sent_Completion);
   }
   else
   {
       FAIL = TRUE;
       llInstantMessage(llGetObjectOwner(), Message_On_Fail_No_Items_To_Send);
   }

}

default {

   on_rez(integer x)
   {
       llResetScript();
   }
   state_entry()
   {
       llSetText(Hover_Text, <1.0,1.0,1.0>, 1.0);
   }
   touch_start(integer x)
   {
       if(llDetectedKey(0) == llGetObjectOwner())
       {
           llSetText("", ZERO_VECTOR, 0);
           llInstantMessage(llGetObjectOwner(), Message_On_Touch);
           llSendInventory(llGetObjectOwner(), INVENTORY_TYPE);
           if(llToLower(Show_Name_Of_Folder_On_Completion) == "yes" && FAIL == FALSE)
           {
               integer index = llSubStringIndex(Show_Name_Message_On_Completion, "<folder>");
               string message;
               if(index != -1)
               {
                   message = llDeleteSubString(Show_Name_Message_On_Completion, index, index + llStringLength(Show_Name_Message_On_Completion)-1);
                   message += Folder_Name;
               }
               else
               {
                   message = Show_Name_Message_On_Completion;
               }
               llInstantMessage(llGetObjectOwner(), message);
           }
           if(llToLower(Delete_On_Completion) == "yes")
           {
               llDie();
           }
           else if(llToLower(Delete_On_Completion) == "no")
           {
               llSetText(Hover_Text, <1.0,1.0,1.0>, 1.0);
           }
       }
   }

} </lsl>