Advertisement
Guest User

Untitled

a guest
Apr 8th, 2022
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Changelog
  2. // V6.1 added delay after @attachoverorreplace
  3. // V6
  4. //    1.changed from @attach to @attachoverorreplace - this should
  5. //      mean that a +folder will get added, and a non+folder gets worn.
  6. //    2.added a function for reports.
  7. //
  8. // V5.5 added the name of the folder to the selection dialog header
  9. //
  10. // V5 first stable release
  11. //-------------------------------------------------------------------#
  12.  
  13. integer listen_handle;
  14. string my_folder;
  15. list folder_list;
  16. key me;
  17. string omit = "*";  // omit folders that start with this from the dialog
  18. integer timeout = 30; //seconds
  19. integer debug = 0;
  20.  
  21. // Strip listA of all items that start with test, return the new list.
  22. list stripList(list listA, string test)
  23. {
  24.     integer i = 0;
  25.     integer ln = llGetListLength(listA);
  26.     integer lt = llStringLength(test) - 1;
  27.     list listB;
  28.     while ( i < ln )
  29.     {
  30.         string v = llList2String(listA, i);
  31.         if ( llGetSubString(v,0,lt) != test)
  32.         {
  33.             listB += v;
  34.         }
  35.         ++i;
  36.     }
  37.     return listB;  
  38. }
  39.  
  40. report(string reporttext)
  41. {
  42.   if (debug) {llOwnerSay(reporttext);}  
  43. }
  44.  
  45. default
  46. {
  47.     attach (key owner_id)  // this is run when this object is attached
  48.     {
  49.         debug = llGetObjectDesc() == "debug";
  50.         llSetTimerEvent(timeout);
  51.         me=llGetOwner();
  52.         listen_handle == llListen(2222,"",me, "");
  53.         llSleep(0.1);
  54.         llOwnerSay("@getpathnew:"+(string)llGetKey()+"=2222");  // get the folder containing this object
  55.     }
  56.  
  57.     listen (integer chan, string name, key id, string message )
  58.     {
  59.         if ( chan==2222 )  // get the folder containing the object
  60.         {
  61.             llListenRemove(listen_handle);
  62.             my_folder = message;
  63.             listen_handle == llListen(3333,"",me, "");
  64.             // get all the subfolders of this folder
  65.             llOwnerSay("@getinv:"+my_folder+"=3333");
  66.         }
  67.         else if ( chan==3333 ) // get the subfolders of the folder containing the object
  68.         {
  69.             llListenRemove(listen_handle);
  70.             report("Subfolders:"+message);
  71.             folder_list=stripList(llParseString2List(message,[","],[]), omit);
  72.             listen_handle == llListen(4444,"",me, "");
  73.             llDialog(me,my_folder + ": select the Folder to add:",folder_list,4444);
  74.         }
  75.         else if ( chan == 4444 ) // the dialog selection response
  76.         {
  77.             llListenRemove(listen_handle);
  78.             report("Button:"+message);
  79.             llOwnerSay("@attachoverorreplace:"+my_folder+"/"+message+"=force");
  80.             llSleep(10);
  81.             report("detaching after attach");
  82.             llOwnerSay("@detachthis=force");
  83.         }
  84.     }
  85.  
  86.     timer()
  87.     {
  88.         report("detaching now timer");
  89.         llListenRemove(listen_handle);  // no answer after timeout, remove the listener
  90.         llOwnerSay("@detachthis=force"); // and detach this from the avatar
  91.     }
  92. }
  93.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement