Advertisement
Swiftkill

(Swift) give inventory (give anyone in proximity)

Jun 8th, 2020
2,220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.66 KB | None | 0 0
  1. string script; // script name to skip it while giving
  2. string hover_text = "test";  // hover text
  3. vector hover_color = <1.0,1.0,1.0>;
  4. string folder;
  5.  
  6. float range = 5; // detection range, m
  7. float rate =  5; // seconds between scans , do nt d too often.
  8.  
  9. list listav = [];
  10. integer max_avatars = 50;
  11. integer no_to_forget = 10;
  12.  
  13. // Init procedure on state entry.
  14. init()
  15. {
  16.     llSensorRepeat("", NULL_KEY, AGENT, range, PI, rate);
  17.     llSetText(hover_text, hover_color, 1);
  18.     script = llGetScriptName();
  19.     folder = llGetObjectName();
  20. }
  21.  
  22. give(key avatar)
  23. {
  24.      list to_give;
  25.         integer c=0;
  26.         integer max=llGetInventoryNumber(INVENTORY_ALL);
  27.         string this;
  28.         for(c=0;c<max;c++)
  29.         {
  30.             this = llGetInventoryName(INVENTORY_ALL, c);
  31.             if(this!=script)
  32.             {
  33.                 to_give+=[this];
  34.             }
  35.         }
  36.  
  37.         llGiveInventoryList(avatar,folder,to_give);
  38. }
  39.  
  40. default
  41. {
  42.     state_entry()
  43.     {
  44.         init();
  45.     }
  46.  
  47.     // resetting state on rez, just in case
  48.     on_rez(integer start_param)
  49.     {
  50.         llResetScript();
  51.     }
  52.  
  53.     // for every toucher in queue, give them content
  54.     sensor(integer n)
  55.     {
  56.         integer count;
  57.         integer i;
  58.         for( i = 0; i < n; i++)
  59.         {
  60.             key avatar = llDetectedKey(i);
  61.             count = llListFindList(listav,[avatar]);
  62.             if (count == -1)
  63.             {
  64.                 listav += avatar;
  65.                 give(llList2String(listav, i));
  66.             }
  67.             if(llGetListLength(listav) > max_avatars )
  68.                 listav = llDeleteSubList( listav, 0, no_to_forget );
  69.         }
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement