Difference between revisions of "Give InvItem every n hours"
Jump to navigation
Jump to search
(Wait no, now I did.) |
Kireji Haiku (talk | contribs) 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 = | integer giveallowed = FALSE; | ||
integer index = llListFindList( visitors, [ llDetectedKey(n) ] ); | integer index = llListFindList( visitors, [ llDetectedKey(n) ] ); | ||
if (index == | if (index == ERR_GENERIC) | ||
{ | { | ||
visitors = visitors + [ llDetectedKey(n) ]; | visitors = visitors + [ llDetectedKey(n) ]; | ||
lastsent = lastsent + [(integer)llGetUnixTime()]; | lastsent = lastsent + [(integer)llGetUnixTime()]; | ||
giveallowed = | giveallowed = TRUE; | ||
} | } | ||
else | else | ||
Line 50: | Line 50: | ||
lastsent = []; | lastsent = []; | ||
lastsent = newlastsent; | lastsent = newlastsent; | ||
giveallowed = | giveallowed = TRUE; | ||
} | } | ||
// else giveallowed = FALSE; | |||
} | } | ||
if (giveallowed == | if (giveallowed)// == TRUE | ||
{ | { | ||
llGiveInventory(llDetectedKey(n), giveitem); | llGiveInventory(llDetectedKey(n), giveitem); |
Revision as of 02:02, 8 October 2013
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
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)