Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Changelog
- // V6.1 added delay after @attachoverorreplace
- // V6
- // 1.changed from @attach to @attachoverorreplace - this should
- // mean that a +folder will get added, and a non+folder gets worn.
- // 2.added a function for reports.
- //
- // V5.5 added the name of the folder to the selection dialog header
- //
- // V5 first stable release
- //-------------------------------------------------------------------#
- integer listen_handle;
- string my_folder;
- list folder_list;
- key me;
- string omit = "*"; // omit folders that start with this from the dialog
- integer timeout = 30; //seconds
- integer debug = 0;
- // Strip listA of all items that start with test, return the new list.
- list stripList(list listA, string test)
- {
- integer i = 0;
- integer ln = llGetListLength(listA);
- integer lt = llStringLength(test) - 1;
- list listB;
- while ( i < ln )
- {
- string v = llList2String(listA, i);
- if ( llGetSubString(v,0,lt) != test)
- {
- listB += v;
- }
- ++i;
- }
- return listB;
- }
- report(string reporttext)
- {
- if (debug) {llOwnerSay(reporttext);}
- }
- default
- {
- attach (key owner_id) // this is run when this object is attached
- {
- debug = llGetObjectDesc() == "debug";
- llSetTimerEvent(timeout);
- me=llGetOwner();
- listen_handle == llListen(2222,"",me, "");
- llSleep(0.1);
- llOwnerSay("@getpathnew:"+(string)llGetKey()+"=2222"); // get the folder containing this object
- }
- listen (integer chan, string name, key id, string message )
- {
- if ( chan==2222 ) // get the folder containing the object
- {
- llListenRemove(listen_handle);
- my_folder = message;
- listen_handle == llListen(3333,"",me, "");
- // get all the subfolders of this folder
- llOwnerSay("@getinv:"+my_folder+"=3333");
- }
- else if ( chan==3333 ) // get the subfolders of the folder containing the object
- {
- llListenRemove(listen_handle);
- report("Subfolders:"+message);
- folder_list=stripList(llParseString2List(message,[","],[]), omit);
- listen_handle == llListen(4444,"",me, "");
- llDialog(me,my_folder + ": select the Folder to add:",folder_list,4444);
- }
- else if ( chan == 4444 ) // the dialog selection response
- {
- llListenRemove(listen_handle);
- report("Button:"+message);
- llOwnerSay("@attachoverorreplace:"+my_folder+"/"+message+"=force");
- llSleep(10);
- report("detaching after attach");
- llOwnerSay("@detachthis=force");
- }
- }
- timer()
- {
- report("detaching now timer");
- llListenRemove(listen_handle); // no answer after timeout, remove the listener
- llOwnerSay("@detachthis=force"); // and detach this from the avatar
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement