Difference between revisions of "Give InvItem every n hours"

From Second Life Wiki
Jump to navigation Jump to search
(Wait no, now I did.)
m (-1 >> ERR_GENERIC and 0 >> FALSE and 1 >> TRUE)
Line 34: Line 34:
         for (n=0; n<total_number; n++)
         for (n=0; n<total_number; n++)
         {
         {
             integer giveallowed = 0;
             integer giveallowed = FALSE;
             integer index = llListFindList( visitors, [ llDetectedKey(n) ] );
             integer index = llListFindList( visitors, [ llDetectedKey(n) ] );
             if (index == -1)
             if (index == ERR_GENERIC)
             {
             {
                 visitors = visitors + [ llDetectedKey(n) ];
                 visitors = visitors + [ llDetectedKey(n) ];
                 lastsent = lastsent + [(integer)llGetUnixTime()];
                 lastsent = lastsent + [(integer)llGetUnixTime()];
                 giveallowed = 1;
                 giveallowed = TRUE;
             }
             }
             else
             else
Line 50: Line 50:
                     lastsent = [];
                     lastsent = [];
                     lastsent = newlastsent;
                     lastsent = newlastsent;
                     giveallowed = 1;
                     giveallowed = TRUE;
                }
                else
                {
                    giveallowed = 0;
                 }
                 }
//              else giveallowed = FALSE;
             }
             }
             if (giveallowed == 1)
             if (giveallowed)// == TRUE
             {
             {
                 llGiveInventory(llDetectedKey(n), giveitem);
                 llGiveInventory(llDetectedKey(n), giveitem);

Revision as of 02:02, 8 October 2013

This script will give an inventory item on touch only every n hours, even if somebody touches the object more than once.

<lsl> // Idea and written by Criz Collins // Don't sell this FREE script!!!

string giveitem = "name of item in objects inventory"; float giveevery = 24; // hours!

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

list visitors; list lastsent; integer n;

default {

   on_rez( integer param )
   {
       llResetScript();
   }
   changed(integer change) 
   {
       if (change & CHANGED_INVENTORY) 
       {
           llResetScript();
       }
   }
   
   touch_start(integer total_number)
   {
       for (n=0; n<total_number; n++)
       {
           integer giveallowed = FALSE;
           integer index = llListFindList( visitors, [ llDetectedKey(n) ] );
           if (index == ERR_GENERIC)
           {
               visitors = visitors + [ llDetectedKey(n) ];
               lastsent = lastsent + [(integer)llGetUnixTime()];
               giveallowed = TRUE;
           }
           else
           {
               if (llList2Integer(lastsent, index) <= ((integer)llGetUnixTime() - (giveevery * 60 * 60)))
               {
                   list replacer = [(integer)llGetUnixTime()];
                   list newlastsent = llListReplaceList(lastsent, replacer, index, index);
                   lastsent = [];
                   lastsent = newlastsent;
                   giveallowed = TRUE;
               }

// else giveallowed = FALSE;

           }
           if (giveallowed)// == TRUE
           {
               llGiveInventory(llDetectedKey(n), giveitem);
           }
       }
   }

} </lsl>

Criz Collins 11:14, 11 June 2008 (PDT)